在python中使用super()

2024-09-30 22:24:43 发布

您现在位置:Python中文网/ 问答频道 /正文

当我执行以下操作时:

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也不继承类对象,我会得到一个错误。 这是怎么回事?你知道吗


Tags: 对象selfobjectdef样式人类descclass
1条回答
网友
1楼 · 发布于 2024-09-30 22:24:43

它是这样工作的,因为只有一个类或继承的类需要从object继承才能由object使用的元类创建类。元类控制这个MRO行为。你知道吗

这是one of the better answers on stack overflow explaining metaclasses。你知道吗

在Python3中,这都是没有意义的,因为一切都是一个新样式的类。而且,没有理由不从object继承,所以除非您被迫将一些旧库与不从object继承的类一起使用,否则您最好让所有类都从它继承。你知道吗

相关问题 更多 >