主要内容:
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)