python基础--面向对象多继承

多继承

class A:
    def test(self):
        print("test 方法")

class B:
    def demo(self):
        print("demo 方法")

class C(A, B):
    # 多继承可以让子类对象,同时具有多个父类的属性和方法
    pass

# 创建子类对象
c = C()

c.test()
c.demo()
# 如果不同的父类中存在同名的方法,子类对象在调用方法时,会调用哪一个父类中的方法呢?
# 提示:开发时,应该尽量避免这种容易产生混淆的情况! -- 如果父类之间存在同名
# 的属性或者方法,应该尽量避免使用多继承
  • 输出
test 方法
demo 方法

多继承调用顺序

class A:
    def demo(self):
        print("A------demo 方法")

    def test(self):
        print("A------test 方法")

class B:
    def demo(self):
        print("B------demo 方法")

    def test(self):
        print("B------test 方法")

class C(A, B):
    # 多继承可以让子类对象,同时具有多个父类的属性和方法
    pass

c = C()

c.test()
c.demo()

# 确定C类对象调用方法的顺序
# 方法搜索顺序
print(C.__mro__)
  • 输出
A------test 方法
A------demo 方法
(<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>)
  • 总结
  1. 多继承可以让子类对象,同时具有多个父类的属性和方法;
  2. 开发时,应该尽量避免 不同的父类中存在同名的方法 这个容易产生混淆的情况! – 如果父类之间存在同名的属性或者方法,应该尽量避免使用多继承;
  3. 确定C类对象调用方法的顺序用方法搜索顺序类名.__mro__
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值