Twenty 类与类的关系_继承

 

1、类与类的关系

  依赖关系:给一个类的方法传了一个参数,此参数是另一个类的对象(类名)

e1 = Elphant('大象')
media = Refrigerator('美的')
e1.open(media)

  关联关系 聚合关系 组合关系

class Boy:
    def __init__(self, name, girlfriend=None):
        self.name = name
        self.girlfriend = girlfriend

    def have_a_dinner(self):
        if self.girlfriend:
            print('%s has dinner with %s' % (self.name, self.girlfriend.name))

    def append_girl(self, girl):
        self.girlfriend = girl

    def remove_girl(self):
        self.girlfriend = None

class Girl:
    def __init__(self, name)
        self.name = name

# 起初创业没有女朋友
b = Boy('alex')
b.have_a_dinner()
# 突然有一天拆迁有女朋友了
g = Girl('如花')
b.append_girl(g)
b.have_a_dinner()
class School:
    def __init__(self, name, address):
        self.name = name
        self.address = address
        self.teacher_list = []

    def append_teacher(self, teacher):
        self.teacher_list.append(teacher)

class Teacher:
    def __init__(self, name, comment, school):
        self.name = name
        self.comment = comment
        self.school = school

    def check_address(self):
        print('%s 在%s 办公'%(self.name,self.school.address))


beijing = School('老男孩北京校区','美丽富饶的沙河')
shanghai = School('老男孩上海校区','上海漳江新区')
shenzhen = School('老男孩深圳校区','南山区平山村儿')

t1 = Teacher('太白','优秀',beijing)
t2 = Teacher('景女神','优秀',beijing)
t3 = Teacher('文周','优秀',beijing)
beijing.append_teacher(t1)
beijing.append_teacher(t2)
beijing.append_teacher(t3)

for i in beijing.teacher_list:
    print(i.name)

2、多继承:新式类,c3算法

[A] + merge([B,D,O],[B,E,O],[C,E,O],[C,F,O])  #  列表第一位为表首,表首外为表尾,如果表尾没有表首的内容,则表首提取

# print(A.__mro__) 就可以打印顺序

# super 也是遵循mro 顺序

posted @ 2019-01-16 19:39  pythonernoob  阅读(94)  评论(0)    收藏  举报