python面向对象

主要内容:

1.面向对像

类:

  具有相同属性和技能的一类事物.

对象:

  类的具体表现.

class 关键字

class 类名:  (类名应该首字母大写)

对像:

obj1 = 类名()  这句话程序主要做了三件事.

1.在内存中创造了一个空的对象空间.

2.自动执行__init__(self),并且将空的对象空间传给self

3.在__init__方法中,给空的对象空间封装一些属性,然后再将完善好的空间,返回给这个类名,这个对象.

   1)对象查看自已空间的所有属性:

  obj._dict

 2)对像操作自已的属性,万能的点.

       obj.属性名(增删改查)

 3)对象可以查询类中的静态字段

  obj.静态字段.

  4)对象执行类中的方法.

  obj.方法名()

类名称空间和对象名称空间

对象的查询顺序:先从对象空间去找,对象的空间没有此变量或者方法,通过对象中的类对象指针去类中寻找.

类的查询顺序: 直接从类本身找.不能从对象中查找.

无论创建多少对象,都是开辟独立的空间,各个对象之间不能互相查找,干扰.

计算一个类实例化多少个对象

示例代码:

class A:
    count = 0
    def __init__(self):
        A.count += 1
        pass
    def fun(self):
        pass
ob1 = A()
ob2 = A()
ob3 = A()
ob4 = A()
print(ob3.count)

组合: 给一个类的对象,封装一个属性,这个属性是另一个类的对象.

示例:

class People:
    def __init__(self,*args):
        self.name = args[0]
        self.ad = args[1]
        self.hp = args[2]
    def attack(self,ob1):
        ob1.hp = ob1.hp - self.ad
        print("%s攻击了%s,%s还剩下%s的血!"%(self.name,ob1.name,ob1.name,ob1.hp))
    def add_weapon(self,wea):
        self.weapon = wea

gl = People("盖伦",10,100)
js = People("剑圣",20,80)
gl.attack(js)
js.attack(gl)

 

原文地址:https://www.cnblogs.com/ahliucong/p/9239170.html