python - python循环继承,覆盖类声明
问题描述
试图了解 Python 如何创建一些类
class A:
pass
class B(A):
pass
class A(B):
pass
a = A()
由于循环依赖,我期待一些错误,但它没有抱怨。
A.__mro__
印刷(__main__.A, __main__.B, __main__.A, object)
所以看起来有两个类叫做A
. 我期待第二个声明覆盖第一个声明。
谁能详细解释这里发生了什么?头等舱A
可以到达吗?
解决方案
没有循环继承:您创建了三个类。第一个是第二个的基类,第二个是第三个的基类。第三个与第一个 (A) 具有相同的名称,因此全局名称 A 现在指的是第三个。就像重新分配变量一样。
是的,第一个是可以访问的,因为正如您已经指出的那样,它位于A.__mro__
. 因此,如果您愿意,您可以这样做:
old_A = A.__mro__[2]
推荐阅读
- python - 如何在 python SQLAlchemy 中按子字符串排序
- saprfc - SAP - 将值发送到 RFC
- python - 删除背景图像 opencv
- android - 如何使用 camera2 api 使用“广角镜头”或“长焦镜头”?
- reactjs - 我正在尝试在 React 中进行状态提升。我错过了什么?
- ios - 我们可以从我们的 ios 应用程序启动我们的应用程序设置页面吗?
- javascript - 如何更改元素内的文本,对应于 ReactJs 中的 onClick 事件?
- javascript - 为什么我的动态创建的复选框值被解析为 null
- android - LayoutInflater 忽略 XML 属性
- wcf - 在 IIS 上将客户端证书选项设置为“已接受”时未调用 CustomCertificateValidator