Python:python3中

阅读: 评论:0

Python:python3中

Python:python3中

注:尚未在pyhon2中测试
参考文档:.php?mod=viewthread&tid=48888&extra=page%3D1%26filter%3Dtypeid%26typeid%3D403

· 错误示例


——————————————————————————————————

class A():def __init__(self):self.a=10def get_a(self):print("我是a")class B():def __init__(self):self.b=10def get_b(self):print("我是b")B.__bases__ += (A,)
· 正确用法

class A():def __init__(self):self.a=10def get_a(self):print("我是a")class Before_B():pass
class B(Before_B):def __init__(self):self.b=10def get_b(self):print("我是b")print(B.__bases__)
B.__bases__ += (A,)

在这里插入代码片由此可见,使用__bases__时,不继承__init__里的属性,只继承方法;为B类添加A类方法的前提是B是一个继承类,即B.__bases__为(<class ‘main.B的父类’>,)

· 查看继承的类,MRO

使用 print(类名._mro_) 可查看继承的顺序。
参考文档《一窥Python中MRO排序原理》,可以看出是深度优先的原则。
参考文档《多重继承的陷阱:钻石继承(菱形继承)问题》则写着广度优先。
?????

本文发布于:2024-01-28 00:33:00,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063731803570.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:Python
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23