执行以下操作时:
class animal(object):
def desc(self):
print 'animal'
class human():
def desc(self):
print 'human'
class satyr(human, animal):
def desc(self):
print 'satyr'
grover=satyr()
super(satyr, grover).desc()
我得到了人类! 但人类甚至没有继承类对象,我认为super只有在继承了类对象时才能工作。 (新风格)
现在如果我让动物也不继承类对象,我会收到一个错误。 这里发生了什么?
答案 0 :(得分:2)
它的工作方式是这样的,因为只有一个类或继承的类需要从object
继承,以便您的类由object
使用的元类创建。元类控制此MRO行为。
这是one of the better answers on stack overflow explaining metaclasses。
在python 3中,这一切都没有实际意义,因为一切都是新式的。此外,确实没有理由 NOT 从object
继承,所以除非你被迫使用一些旧的图书馆,而这些图书馆不会继承自object
,您也可以从中继承所有类。