首页 > 其他 > 详细

类之间的关系

时间:2020-03-17 17:37:25      阅读:58      评论:0      收藏:0      [点我收藏+]

1. 依赖关系

 执行某个动作的时候. 需要xxx来帮助你完成这个操作. 此时的关系是最轻的.

 随时可以更换另外一个东西来完成此操作

class Person:

    def play(self, tools): # 通过参数的传递把另外一个类的对象传递进来

        tools.run()

        print("很开心, 我能玩儿游戏了")

class Computer:

    def run(self):

        print("电脑开机. 可以运行")

class Phone:

    def run(self):

        print("手机开机, 可以运行")

c = Computer()

phone = Phone()

p = Person()

p.play(phone)

 

2、关联关系

   在对象里边埋对象

   self.girlFriend = girl

①   一对一关系

class Boy:

    def __init__(self, name,  girlFriend=None):

        # 在初始化的时候可以给一个对象的属性设置成另一个类的对象

        self.girlFriend = girlFriend  # 一个男孩有一个女朋友

    def chi(self):

        if self.girlFriend:

            print(f"带着他的女朋友{self.girlFriend.name}去吃饭")

        else:

            print("单身狗, 吃什么吃? 滚去学习.")

②   一对多关系

class School:

    def __init__(self,name):

        self.name = name

        self.teach_list = []

 

    def employ(self,teacher):

        self.teach_list.append(teacher)

 

    def goclass(self):

        for i in self.teach_list:

            i.work()

class Teacher:

    def __init__(self,name):

        self.name = name

 

    def work(self):

        print(f‘{self.name}老师去上课了‘)

 

s = School(‘哈佛‘)

 

t1 = Teacher(‘zhangmeng‘)

t2 = Teacher(‘sunxinag‘)

t3 = Teacher(‘lina‘)

t4= Teacher(‘zhenjia‘)

t5= Teacher(‘lixiao‘)

t6 = Teacher(‘zhouying‘)

t7 = Teacher(‘huyang‘)

 

s.employ(t1)

s.employ(t2)

s.employ(t3)

s.employ(t4)

s.employ(t5)

s.employ(t6)

s.employ(t7)

 

s.goclass()

类中的关系:依赖关系是最轻的,最终的是继承关系,关联关系是比较微妙的

3、继承关系

子类在不影响父类的程序运行的基础上对父类进行的扩充和扩展,这里我们把父类称为超类或者基类,子类被称为派生类。我们写好的类和创建的对象,默认都是可哈希的。

class Foo:

    __hash__ = None 

print(hash(Foo))

print(hash(Foo()))

self  到底是谁:self就是你访问方法的那个对象,谁调用的就是谁。类型是根据调用方的对象来进行交换的。

self访问方法的顺序:永远是先找自己,自己的找不到再找父类

super:表示父类

class Foo():

    def eat(self,food):

    print("我爱吃鱼和",food)

class Bar:

    def eat(self,food):

    print("我爱吃肉和",food)

dic = {Foo:"鸡蛋",Bar:"香肠"}

for k,v in dic.items():

    k().eat(v)

4、继承

class Base:

    def __init__(self,num):

        self.num = num

    def func1(self):

        print(self.num)

        self.func2()

    def func2(self):

        print(111,self.num)

class Foo(Base):

    def func2(self):

        print(222,self.num)

lst = [Base(1), Base(2),Foo(3)]

for obj in lst:

    obj.func1()

类之间的关系

原文:https://www.cnblogs.com/lyt96/p/12512093.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!