python 类与类之间的关系. 特殊成员
一.类与类之间的关系
1.依赖关系
在方法的参数位置把另一个类的对象作为参数进行传递
1 class Person: 2 3 def play(self, tools): # 通过参数的传递把另一个类的对象传递进来 4 tools.run() 5 print('很开心, 我能玩游戏了') 6 7 class Computer(): 8 def run(self): 9 print('电脑开机.可以运行') 10 11 class Phone(): 12 def run(self): 13 print('手机开机.可以运行') 14 15 c = Computer() 16 phone = Phone() 17 18 p = Person() 19 p.play(phone) 20 p.play(c)
2.关联关系
self.属性 = 对象
self.phone = 苹果
self.phone.play()
多对多关系
(1)一对一关系
1 class Boy: 2 3 def __init__(self, name, girlFriend = None): 4 # 在初始化的时候可以给一个对象属性设置成另一个类的对象 5 self.girlFriend =girlFriend 6 7 def chi(self): 8 if self.girlFriend: 9 print(f'带着他的女朋友{self.girlFriend.name}去吃饭') 10 else: 11 print('单身狗,吃什么吃?去学习') 12 13 def movie(self): 14 if self.girlFriend: 15 print(f'带着他的女朋友{self.girlFriend.name}去看电影') 16 else: 17 print('单身狗,吃什么吃?去看电影') 18 19 class Girl: 20 def __init__(self,name): 21 self.name = name 22 23 b =Boy('宝浪') 24 g =Girl('孙艺珍') 25 b.chi() 26 27 b.girlFriend = g 28 b.chi()
(2)一对多关系
1 class School: 2 3 def __init__(self,name): 4 self.teach_list = [] # 这里要装多个老师 5 6 def zhaopin(self,teach): 7 self.teach_list.append(teach) 8 9 def shangke(self): 10 for i in self.teach_list: 11 i.work() 12 13 class Teacher: 14 def __init__(self,name): 15 self.name = name 16 17 def work(self): 18 print(f'{self.name},在上课') 19 20 lnh = School('老男孩') 21 t1 = Teacher('wusir') 22 t2 = Teacher('太白') 23 t3 = Teacher('日天') 24 t4 = Teacher('宝浪') 25 26 lnh.zhaopin(t1) 27 lnh.zhaopin(t2) 28 lnh.zhaopin(t3) 29 lnh.zhaopin(t4) 30 lnh.shangke()
3.继承关系
1 class Base: # 父类 => 基类 => 超类 2 def chi(self): 3 print('我会吃') 4 5 # 派生类 = > 子类 6 class Foo(Base): # 这个类继承了Base类. Foo类是对Base的一个扩展 7 def he(self): 8 print('我会喝') 9 10 f = Foo() 11 f.chi() 12 f.he()
二.特殊成员
__init__ 初始化操作
__call__ 对象()
__getitem__ 对象[]
__setitem__ 对象[] = 值
__delitem__ del 对象
__new__ 开辟内存.
__hash__ 可哈希. hash()
__enter__ with 对象:
__exit__ with 对象:结束的时候自动调用
__iter__ iter(对象), for