Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python在类中的何处存储继承信息?_Python_Oop_Inheritance - Fatal编程技术网

python在类中的何处存储继承信息?

python在类中的何处存储继承信息?,python,oop,inheritance,Python,Oop,Inheritance,python版本3.5.2 我尝试从子类获取父类: class A: pass class B(A): pass 经过一点研究,我从中得到了一个解决方案:使用\uuuuu base\uuuu。(特殊类属性) 但是我在B中找不到这个“\uuuuu base\uuuuuu”。\uuu dict\uuuuuu或dir(B),这是我获取属性的正常方式 这肯定是与类相关的信息,如果它不在B中的话。uuu dict\uuuu它在哪里?(尽管我意识到“\uuuuu base\uuuuuuuu

python版本
3.5.2

我尝试从子类获取父类:

class A:
    pass
class B(A):
    pass
经过一点研究,我从中得到了一个解决方案:使用
\uuuuu base\uuuu
。(特殊类属性) 但是我在
B中找不到这个
“\uuuuu base\uuuuuu”
。\uuu dict\uuuuuu
dir(B)
,这是我获取属性的正常方式

这肯定是与类相关的信息,如果它不在
B中的话。uuu dict\uuuu
它在哪里?(尽管我意识到
“\uuuuu base\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
为什么
dir()
不返回它呢?根据我的阅读,
dir()
有一些逻辑,它应该返回“所有可用属性的完整图片”

我最初认为这是故意隐藏的……但你仍然可以很容易地操纵孩子的父母:

class C:
    pass
B.__bases__ = (C,) # voila, B got a new Dad
见(我的重点)的说明:

注意:由于提供
dir()
主要是为了方便在交互提示下使用,因此它尝试提供一组有趣的名称,而不是提供严格或一致定义的名称,其详细行为可能会在不同版本中发生变化例如,当参数是类时,元类属性不在结果列表中。

B
是一个类,它的元类是
type
。因此,如果您确实想要完整的图片,还应该将其视为元类“
dir()


这里有
\uuuuuu base\uuuuuuu
\uuuuu base\uuuuuu
,还有出现在中的其他东西,比如
mro
\uuuuu子类\uuuuuuuuuuuu

当我阅读该文档时,我认为
类型(A)。
A.\uu dict\uuuuuuuuuu>就像类属性到实例属性一样。所以我对自己说,即使类型(A)
dict
的基础,但并不意味着
A。
dict也有。你知道,就像静态变量和实例变量一样……现在我意识到
type(type(A))==type(A)
它们都是类,所以
A.。\uu dict\uuu>=type(A)。\uu dict\uu
。但是谢谢你的回答
>>> B.__class__ is type
True
>>> dir(type)
['__abstractmethods__', '__base__', '__bases__', '__basicsize__', '__call__', '__class__',
 '__delattr__', '__dict__', '__dictoffset__', '__dir__', '__doc__', '__eq__', '__flags__',
 '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__',
 '__init_subclass__', '__instancecheck__', '__itemsize__', '__le__', '__lt__',
 '__module__', '__mro__', '__name__', '__ne__', '__new__', '__prepare__', '__qualname__',
 '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__',
 '__subclasscheck__', '__subclasses__', '__subclasshook__', '__text_signature__',
 '__weakrefoffset__', 'mro']