我有一个名为USA
的子类,它有两个父类A
和B
.
两个父对象都有一个名为change_to_4
的方法,在B.__init__
中我调用了该方法,但它没有使用我在B
中定义的方法,而是使用了change_to_4
方法的A
定义.
class A:
def __init__(self) -> None:
self.a = 1
super().__init__()
def change_to_4(self):
self.x = 4
class B:
def __init__(self) -> None:
self.b = 2
self.change_to_4()
super().__init__()
def change_to_4(self):
self.b = 4
class USA(A, B):
def __init__(self) -> None:
super().__init__()
print(f"A vars = {vars(A())}")
print(f"B vars = {vars(B())}")
print(f"USA vars = {vars(USA())}")
print(f"USA mro -> {USA.__mro__}")
我预计会是这样的:
A vars = {'a': 1}
B vars = {'b': 4}
USA vars = {'a': 1, 'b': 4}
USA mro -> (<class '__main__.USA'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>)
但yields
A vars = {'a': 1}
B vars = {'b': 4}
USA vars = {'a': 1, 'b': 2, 'x': 4}
USA mro -> (<class '__main__.USA'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>)