Python面向对象(类之间的关系)(三),,类与类之间的关系


类与类之间的关系

在我们的世界中事物和事物之间总会有一些联系.

在面向对象中. 类和类之间也可以产生相关的关系

1. 依赖关系

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

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

class Plant:    def __init__(self,zhonglei,xue,gongjili):        self.zhonglei = zhonglei        self.xue = xue        self.gongjili = gongjili    def da(self,js):        print("植物打僵尸")        js.xue -= self.gongjili        if js.xue <= 0:            print("僵尸死亡")        else:            print(f"僵尸掉血{self.gongjili},僵尸还剩{js.xue}血")class Jiang:    def __init__(self,zhonglei,xue,gongjili):        self.zhonglei = zhonglei        self.xue = xue        self.gongjili = gongjili    def chi(self,zw):        print("僵尸咬植物")        zw.xue -= self.gongjili        if zw.xue <= 0:            print("植物死亡")        else:            print(f"植物掉血{self.gongjili},植物还剩{zw.xue}血")p = Plant("豌豆",1000,300)j = Jiang("路障",1800,200)p.da(j)p.da(j)p.da(j)p.da(j)j.chi(p)j.chi(p)p.da(j)j.chi(p)j.chi(p)p.da(j)

2. 关联关系

在对象里面埋对象

self.girlFriend = girl

1. 一对一关系

你和你的女朋友

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 Girl:    def __init__(self, name):        self.name = nameb = Boy("宝宝")g = Girl("孙艺")b.chi()

self.teach_list = [t1,t2,t3]

2. 一对多关系

一个学校. 一堆老师

class School:    def __init__(self, name):        self.teach_list = [] # 这里要装多个老师        self.name = name    def zhaopin(self, teach):        self.teach_list.append(teach)    def shangke(self):        for t in self.teach_list:            t.work()class Teacher:    def __init__(self, name):        self.name = name    def work(self):        print(f"{self.name}在上课")s = School("蓝翔")t1 = Teacher("老师1")t2 = Teacher("老师2")t3 = Teacher("老师3")s.zhaopin(t1)s.zhaopin(t2)s.zhaopin(t3)s..shangke()

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

self到底是谁?

self:谁调用的就是谁. 类型是根据调用方的对象来进行变换的

super:表示的是父类

特殊成员:

__init__() # 创建对象的时候初始化操作

__call__() # 对象()

__getitem__() # 对象[哈哈]

__setitem__() # 对象[哈哈] = 值

__delitem__() # del 对象[key]

__new__() # 创建对象的时候.开辟内存

__enter__() # with 对

__exit__() #结束with的时候

__hash__() # 可哈希 hash()

__len__()定义当被 len() 调用时的行为

__iter__()定义当迭代容器中的元素的行为

__repr__(self)定义当被 repr() 调用时的行为

__str__(self)定义当被 str() 调用时的行为

__int__(self)定义当被 int() 调用时的行为

__bool__(self)定义当被 bool() 调用时的行为

__bytes__(self)定义当被 bytes() 调用时的行为

Python面向对象(类之间的关系)(三)

评论关闭