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 = name

b = 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() 调用时的行为

原文地址:https://www.cnblogs.com/fu-1111/p/10146086.html

时间: 2024-11-09 19:40:01

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

Python之面向对象(二)类的空间问题及类之间的关系

6.3 类的空间问题及类之间的关系 类空间的问题 何处可以添加对象属性 class A: def __init__(self,name): self.name = name def func(self,sex): self.sex = sex obj = A("alex") obj.age = 18 # 通过__init__方法添加 print(obj.__dict__) obj1 = A("wusir") obj.func("男") # 通过f

python之路---18 类与类之间的关系

三十七.类与类之间的关系 一.依赖关系 执行某个动作的时候. 需要xxx来帮助你完成这个操作      随时可以更换另外一个东西来完成此操作 此时的关系是最轻的. 二.关联关系(组合关系,聚合关系) 1.一对一关系 2.一对多关系 三.继承关系       (这是最重的关系) self在访问?法的顺序: 永远先找??的. ??的找不到再找?类的 父类  ==    基类  ==  超类 子类 ==    派生类 我们写的类和对象都是可哈希的 如果加上   __hash__ = None    对

java中的面向对象和类之间的关系

1.面向对象 a.分析问题中需要用到哪些类以及对象 b.分析以上类中或对象中应该具有哪些属性及方法 c.分析类之间的关系 (合适的方法应该出现在合适的类中) 2.举例:模板-实物 a.白板笔 b.员工(年龄.姓名.性别.工作岗位) (显示姓名,年龄,修改姓名,修改年龄,变更工作岗位) (区分对象:一般通过方法是无法区分对象的,通过属性可以区分对象) 3.类与对象 a.类是具有共同特征的一类事物的一个抽象 b.对象是这个类具体的某一个实例 4.类(对象)之间的4种关系 a.依赖关系(Depende

02面向对象之:类空间问题及类之间的关系

一.类的空间问题 1.何处可以添加对象属性 class A: def __init__(self,name,age): self.name=name self.age=age def func(self,sex): self.sex = sex # 类的外面可以 obj =A('alex',12) obj.heght=122 print(obj.__dict__){'name': 'alex', 'age': 12, 'heght': 122} # 内部也可以 obj.func('nv') pr

【47】java的类之间的关系:泛化、依赖、关联、实现、聚合、组合

java的类之间的关系:泛化.依赖.关联.实现.聚合.组合 泛化: ? 泛化关系(Generalization)也就是继承关系,也称为"is-a-kind-of"关系,泛化关系用于描述父类与子类之间的关系,父类又称作基类或超类,子类又称作派生类.在UML中,泛 化关系用带空心三角形的直线来表示. ? 在代码实现时,使用面向对象的继承机制来实现泛化关系,如在Java语言中使用extends关键字.在C++/C#中使用冒号":"来实现. 泛化对应Java中继承关系,即子

uml描述类与类之间的关系

工作时培训的时候公司同事讲过UML,当时没怎么听,后在在看相关技术书籍的时候,发现用到还不少,于是恶补了些.UML体系庞杂,非十天半月可以掌握,但是作为简单的工具使用,去看清楚系统的内在逻辑还是可以速成的.(非设计系统),股票市场是一场拼图游戏,而UML也可以作为拼图工具去参与面向对象体系软件设计的! 废话不多说,进入正题. 先介绍几款画UML的工具,三大知名VISIO,RationalRose,PowerDesign不多说,个人喜欢用开源的,一是免费,二是通常体积较小,运行起来比较快.我用的是

类与类之间的关系--泛化,关联,依赖,实现

类,对象是面向对象的基础,类与类之间的关系是面向对象不可或缺的一部分.下面将从类的关系定义,UML中的符号表示,代码实现三方面介绍类与类之间的关系. 1.泛化(Generalization):也成为继承关系.指一个类(子类或者子接口)继承另外一个类(父类或者父接口)的功能.并可以增加自己的功能.在程序程序中用关键字xtends明确标识,在UML设计中用空三角和实线表示,从子类指向父类,或者子接口指向父接口. 如图              代码: public class Cat { publi

Python面向对象 类的空间问题

一.Python 类的空间问题 1.1 何处可以添加对象属性 class A: def __init__(self,name): self.name = name def func(self,sex): self.sex = sex # 类外面可以: obj = A('meet') obj.age = 18 print(obj.__dict__) # {'name': 'meet', 'age': 18} # 类内部也可以: obj = A('meet') # __init__方法可以. obj

java 类与类之间的关系 及uml图

类与接口之间的关系 : 继承 类与类之间的关系 :继承关系  包含关系 类与对象之间的关系 : 实例 UML 类图中类与类之间的关系: 泛化关系(generalization) 关联关系(association) 聚合关系(aggregation) 合成关系 (compostion) 依赖关系 (dependency) 1.泛化(Generalization)[泛化]表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系.一般化的关系是从子类指向父类的,与继承或实现的方法相反.