类和类的关系

在我们的世界中事物和事物之间总会有一些联系.
在面向对象中. 类和类之间也可以产生相关的关系


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()

posted on 2018-12-19 17:28  哎呀!土豆  阅读(110)  评论(0编辑  收藏  举报

导航