Python 类中三大关系(依赖 / 组合/ 继承关系)

本文详细介绍了Python中类之间的三种关系:依赖、组合和继承。依赖关系是通过将一个类的类名或对象作为参数传递给另一函数。组合关系是指一个类的对象成为另一个类的属性。继承则允许子类继承父类的属性和方法,减少代码重复,提高代码结构清晰度。文中还探讨了单继承和多继承的概念,以及在多继承中解决方法解析顺序(MRO)问题的C3算法。
摘要由CSDN通过智能技术生成

在面向对象的中,类与类之间存在三种关系:依赖关系、组合关系、继承关系。

1、依赖关系:
将一个类的类名或对象当做参数传递给另一个函数被使用的关系就是依赖关系

class People:

    def __init__(self,name):
        self.name = name
    def open(self,bx):
        bx.open_door(self)
    def close(self,bx):
        bx.close_door(self)

class Refrigerator:

    def __init__(self,name):
        self.name = name
    def open_door(self,p):
        print(f"{p.name} 打开冰箱")
    def close_door(self,p):
        print(f"{p.name} 关闭冰箱")


r = People("大魔")   # People类实例化一个对象r
aux = Refrigerator("奥克斯")   # Refrigerator类实例化一个对象aux
r.open(aux)    # 将aux对象当做参数传递给r对象的open方法使用
r.close(aux)   # 将aux对象当做参数传递给r对象的close方法使用

2、组合关系:
将一个类的对象封装到另一个类的对象的属性中,就叫组合

class Boy:

    def __init__(self,name,g):
        self.name = name    # self = b
        self.g = g         # g就是girl类实例化的一个对象内存地址
    def eat(self):
        print(f"{self.name}和{self.g.age}岁,且{self.g.weight}公斤的{self.g.name}py朋友.一起吃了个烛光晚餐!")
    def make_keep(self):
        self.g.live(f"{self.g.weight}公斤的{self.g.name}给{self.name}踩背")


class Girl:

    def __init__(self,name,age,sex,weight,*args):
        self.name = name
        self.age = age
        self.sex = sex
        self.weight = weight
        self.args = args
    def live(self,argv):
        print(f"直播内容:{argv}")


g = Girl("乔毕得",54,"女",220)
b = Boy("太博",g)    # 将对象g当做属性封装到b对象的属性中
b.make_keep()

3、继承关系

(1)什么是面向对象的继承

继承(英语:inheritance)是面向对象软件技术当中的一个概念。如果一个类别A“继承自”另一个类别B,就把这个A称为“B的子类别”,而把B称为“A的父类别”也可以称“B是A的超类”。继承可以使得子类别具有父类别的各种属性和方法,而不需要再次编写相同的代码。在令子类别继承父类别的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类别的原有属性和方法,使其获得与父类别不同的功能。另外,为子类别追加新的属性和方法也是常见的做法。

​ 一般静态的面向对象编程语言,继承属于静态的,意即在子类别的行为在编译期就已经决定,无法在执行期扩充。

(2)程序中 A(B)

<1> A -- 子类,派生类

<2> B -- 父类,基类,超类

当我们写多个类的时候会发现许多问题如࿱

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值