【发布时间】:2018-10-20 13:29:58
【问题描述】:
我一直在阅读有关元类的文章,但当谈到 type 和 object 类时,我迷路了。
我知道它们位于层次结构的顶部,并且是用 C 代码实现的。
我也知道type 继承自object 并且object 是type 的一个实例。
在我在 SO 上找到的 answers 之一中,有人说 - 关于 object-type 关系 - 那:
这种相互继承通常是不可能的,但这就是 Python 中这些基本类型的方式:它们违反了规则。
我的问题是为什么要这样实施,这样实施的目的是什么?它解决了什么问题/这种设计有什么好处?难道不能只是 type 或只是 object 类,它位于每个类继承的层次结构的顶部吗?
最后,从object 子类化与从type 子类化之间有什么区别,我什么时候想使用其中一个?
class Foo(object):
pass
对
class Foo(type):
pass
【问题讨论】:
-
这个答案很有误导性。没有相互继承;答案并不能很好地传达实例和子类关系之间的区别。
-
type是 Python 中的基本元类。 (每个类都是一个对象,一个类的类就是它的元类。)你不应该继承type,除非你有意创建一个元类。
标签: python inheritance metaclass