当我执行以下操作时:
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()
我是人类! 但是人类甚至没有继承类对象,我认为只有继承了类对象,超类才起作用。(新样式类)
如果我让animal也不继承类对象,我会得到一个错误。 这是怎么回事?你知道吗
它是这样工作的,因为只有一个类或继承的类需要从
object
继承才能由object
使用的元类创建类。元类控制这个MRO行为。你知道吗这是one of the better answers on stack overflow explaining metaclasses。你知道吗
在Python3中,这都是没有意义的,因为一切都是一个新样式的类。而且,没有理由不从
object
继承,所以除非您被迫将一些旧库与不从object
继承的类一起使用,否则您最好让所有类都从它继承。你知道吗相关问题 更多 >
编程相关推荐