【发布时间】:2017-03-30 07:40:00
【问题描述】:
python版本3.5.2
我试图从子类中获取父类:
class A:
pass
class B(A):
pass
经过一番研究,我从python doc 得到了解决方案:使用__base__。 (一个特殊的类属性)
但是我在B.__dict__或dir(B)中找不到这个"__base__",这是我获取属性的正常方式。
这肯定是类相关信息,如果不在B.__dict__中,那在哪里呢? (虽然我意识到"__base__" 是由type(B).__dict__ 返回的)
为什么dir() 不返回呢?基于this stackoverflow question 我读到,dir() 背后有一些逻辑,它应该返回“所有可用属性的完整图片”。
我最初认为这是故意隐藏的......但您仍然可以轻松地操纵孩子的父母:
class C:
pass
B.__bases__ = (C,) # voila, B got a new Dad
【问题讨论】:
标签: python oop inheritance