父类的多重继承和MRO(方法顺序解析)和变量__init__参数?

时间:2014-08-09 11:00:05

标签: python python-2.7

我想从NamedAndOrderedNamed设计类Ordered并发现这并不容易,因为父类都有不同的__init__()参数列表,请参阅示例这个描述。我在Python方面有很长的经验,但仍然不知道如何解决这个问题 - 你能分享一些经验。

class Named(object):
  def __init__(self, name):
    super(Named, self).__init__()
    self.name = name
    print type(Named), self.name

    class Ordered(object):
      def __init__(self, order):
        super(Ordered, self).__init__()
        self.order = order
        print type(Ordered), self.order

    class NameAndOrdered(Named, Ordered):
      def __init__(self):
        super(NameAndOrdered, self).__init__(1)
        print 'name', self.name
        print 'order', self.order

    nameAndOrdered = NameAndOrdered()

此代码不起作用TypeError: __init__() takes exactly 2 arguments (1 given),因为Named尝试调用Ordered Named不应该知道Ordered sice可以在其他地方定义。

如果Named需要一些不同于Orderd的参数,如何解决初始化问题?

这个例子是抽象的,它尽可能简化以显示要解决的问题。

0 个答案:

没有答案