类和类的关系
在我们的世界中事物和事物之间总会有一些联系.
在面向对象中. 类和类之间也可以产生相关的关系
1. 依赖关系
执行某个动作的时候. 需要xxx来帮助你完成这个操作. 此时的关系是最轻的.
随时可以更换另外一个东西来完成此操作
class Jiang: def __init__(self,name,hp,ad): self.name = name self.hp = hp self.ad = ad def c(self): self.hp -= self.ad print(f"{self.name}打僵尸,僵尸掉血{self.ad},还剩{self.hp}血") def chi(self,b): b.d() z = Zhi("撑杆僵尸",100,30) j = Jiang("豌豆",150,50) z.da(j) j.chi(z) z.da(j) j.chi(z) z.da(j)
2. 关联关系
在对象里面埋对象
1. 一对一关系
卢本伟和他的女朋友 self.girlFriend = None (卢本伟的参数中给一个默认参数)
class Boy: def __init__(self, name, girlFriend=None): self.girlFriend = girlFriend self.name = name def chi(self): if self.girlFriend: print(f"{self.name}带着他的女朋友{self.girlFriend.name1}去吃饭") else: print("单身狗, 你还有脸吃饭?") class Girl: def __init__(self, name,name1): self.name = name self.name1 = name1 g = Girl("UU妹","范冰冰") b = Boy("卢本伟",g) b.chi()
2. 一对多关系
一个学校. 一堆老师 self.list = [] (列表用来添加老师)
class School: def __init__(self,name): self.name = name self.lis = [] def func1(self,t): self.lis.append(t) def func2(self): for i in self.lis : i.work() class Teach : def __init__(self,name): self.name = name def work(self): print(f"{self.name}正在上课") t1 = Teach("卢本伟") t2 = Teach("梦泪") t3 = Teach("赵梦玥") t4 = Teach("大司马") s = School("天王巨星") s.func1(t1) s.func1(t2) s.func1(t4) s.func1(t3) s.func2()
类中的关系: 依赖关系是最轻的. 最重的是继承关系. 关联关系是比较微妙的.
self到底是谁?
self:谁调用的就是谁. 类型是根据调用方的对象来进行变换的
super:表示的是父类
特殊成员:
__init__() # 创建对象的时候初始化操作
__call__() # 对象()
__getitem__() # 对象[哈哈]
__setitem__() # 对象[哈哈] = 值
__new__() # 创建对象的时候.开辟内存
__enter__() # with 对象
__exit__() #结束with的时候
__hash__() # 可哈希 hash()