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

 

posted @ 2018-12-29 16:11  沐小熊  阅读(233)  评论(0编辑  收藏  举报