zoukankan      html  css  js  c++  java
  • 初始面向对象

    一.初始面向对象

    class Person:
    role = '人' # 类的静态变量 是所有的对象共享的一个属性
    def __init__(self):
    pass
    def attack(self):

    1.类:一类事务,如人,电脑等

    对象:一个具体的事务,如小明,小明的手机

    2.定义一个类:

    class Person(): 类名 Person 首字母要大写 ()可写可不写
    在类中添加共用属性 role = '人' 类的静态变量 是所有的对象共享的一个属性
    在调用时用 print(Person.role)

    3.查看类中的名字:

    3.1 print(Person.role) 类提供给我们的调用方式  可以进行修改 如Person.role = '中国人'
    3.2 print(Person.__dict__) 类提供的存储方式 会将类中的所有名字和方法均显示出来
    print(Person.__dict__['role'])

    4.类只有两个作用:

    4.1.使用类中的名字
    查看类中的名字:1. 类名.变量名 # 可以修改变量的值
    2.类名.__dict__['变量名'] # 不能修改
    4.2.创造对象 实例化对象
    对象就是实例,一个实际的例子
    对象 = 类名() #obj1=person()

    5.实例化:

    1.obj1 = Person('alex','female',1,250)  # 实例化 先创造对象 再初始化
    print(obj1.name,obj1.sex,obj1.aggr,obj1.hp)
    print(obj2.name,obj2.sex,obj2.aggr,obj2.hp)
    print(obj1.__dict__)
    2.调用__init__方法 : 初始化方法
    def __init__(self,name,sex,aggr,hp): #方法 动态属性 内置的双下方法 self就是对象
    self.name = name self理解为等于一个空字典,self={} self.name中name为key值,等号右边的为value值
    self.sex = sex name,sex等均为属性
    self.aggr = aggr
    self.hp = hp

    6.对象的具体:

    print(obj1) #object at 0x000001B8F1378A90>
    print(obj2) #object at 0x000001B8F1378AC8>
    1.内存地址的不一致
    2.不同的对象 属性的值应该不同

    7.类名(参数)

    1.创造一个空对象 : self(即obj1)
    2.调用__init__方法 : 初始化方法
    3.把参数传给__init__方法
    4.完成init方法中的代码
    5.自动将self返回给实例化的地方 self就是对象

    8.调用类中的方法 :

    def attack(self):  # 自定义方法
    print(self.name)
    1.类名.方法名(对象) Person.attack(obj1)
    2.对象名.方法名() obj1.attack() def attack(self):self就是obj1

    9.使用面向对象的步骤:

    1.完成类
    首先分析一下角色和类 类里面有哪些属性 init方法
    再分析这个类中能有哪些行为 定义为方法
    2.实例化
    传参数获取实例化之后的对象
    1.首先创造对象,
    2.执行init方法
    3.对象的调用:使用对象调用对象属性和类中的方法
    对象名的作用:
    1.使用变量 对象名.属性名 obj1.name
    2.调用方法 对象名.方法名() obj1.attack()
    实例:人狗大战
    class Person:    # 类名 Person
        role = ''  # 类的静态变量 是所有的对象共享的一个属性
        def __init__(self,name,sex,aggr,hp):  #方法 动态属性  内置的双下方法
            self.name = name    # 对象属性 实例属性
            self.sex = sex
            self.aggr = aggr
            self.hp = hp
        def attack(self,dog):  # 自定义方法
            print('%s打了%s'%(self.name,dog.name))
            dog.hp -= self.aggr
    
    class Dog:
        def __init__(self,name,kind,aggr,hp):
            self.name = name   # 对象属性
            self.kind = kind
            self.aggr = aggr
            self.hp = hp
        def bite(self,person):
            print('%s咬了%s'%(self.name,person.name))
            person.hp -= self.aggr
    hei = Dog('小黑','teddy',260,10000)  # 实例化: 先创造对象 再初始化
    alex = Person('alex','female',1,250)  # 实例化
    egon = Person('egon','male',2,500)  # 实例化
    alex.attack(hei)   # Person.attack(alex,hei)
    egon.attack(hei)   # Person.attack(alex,hei) 调用类中的方法
    print(hei.hp)
    hei.bite(alex)
    print(alex.hp)
    View Code
    根据半径求圆面积
    from math import pi
    class Circle:
        def __init__(self,r):
            self.r=r
        def area(self):
           return self.r**2*pi
        def  perimeter(self):
           return self.r*2*pi
    circle=Circle(5)
    print(circle.area())
    print(circle. perimeter())
    View Code
     
     
     
     
     
     
     
     
  • 相关阅读:
    前端 二
    web 作业 01
    前端 一
    mysql 了解性知识
    数据查询优化之mysql索引
    yml格式或者叫做YAML格式数据学习
    执行sql报错:Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
    大型网站架构之分布式消息队列(转)
    intellj利用 maven自动生成dto,mapper文件
    对memcached使用的总结和使用场景(转)
  • 原文地址:https://www.cnblogs.com/zgf-666/p/8541162.html
Copyright © 2011-2022 走看看