Python 3.x 跨类调用通过';兄弟姐妹';遗产

Python 3.x 跨类调用通过';兄弟姐妹';遗产,python-3.x,multiple-inheritance,Python 3.x,Multiple Inheritance,我想知道我所创造的东西是否有效和“好”——或者实际上是一团糟 我有一个类,它有一个调用另一个类中函数的方法。然而,只有当这两个类被合并到另一个子类中时,它才“可见”。如果有人只是在看这个方法,他们可能会想知道它到底在哪里——这并不清楚 我在这里做错了什么,还是Python中常见的什么 class A(): def __init__(self): pass def register_urc(self, text): prin

我想知道我所创造的东西是否有效和“好”——或者实际上是一团糟

我有一个类,它有一个调用另一个类中函数的方法。然而,只有当这两个类被合并到另一个子类中时,它才“可见”。如果有人只是在看这个方法,他们可能会想知道它到底在哪里——这并不清楚

我在这里做错了什么,还是Python中常见的什么

class A():
      def __init__(self):
            pass

      def register_urc(self, text):
            print(text)

class B(A):
      def __init__(self):
            A.__init__(self)

class C():
      def __init__(self):
            self.register_urc("Hello World")

class Z(B, C):
      def __init__(self):
            B.__init__(self)
            C.__init__(self)

      def test(self):
            print("finished")

z = Z()
z.test()
我得到的是:

Hello World
finished. 

我假设这是可行的,因为我引用了Z的“self”,并将其传递给所有其他类

你期望的情况是什么?您关心的是链接还是可读性。可读性。在类C中没有称为register_urc()的方法,并且类C不从任何对象继承。只有当您查看C被继承的位置,然后向下查看类B时,您才会看到在类A中实际找到register_urc(),python正在按照您的要求执行操作。如果C在Z上没有角色,那么不要继承它。记住雅格尼(你不需要它),记住“显式比隐式好”。简而言之,重新设计你的设计,尽量做到显式。