Моя цель — не редактировать класс A, B или C, поскольку они используются другими классами (например, классом E)
Однако до тех пор, пока изменения в классе A, B, C не изменят поведение других импортированных классов этих классов, редактирование A, B или C будет окей.
Я думаю, что MRO: D -> B -> C -> A
Означает ли это, что A можно переопределить только один раз?
Пример кода — попытка 1
from dataclasses import dataclass@dataclass
class A:
@property
def x(self):
return 'a'
@dataclass
class B(A):
def B_method(self):
print(f'{self.x}_B_method')
return
@dataclass
class C(A):
def C_method(self):
print(f'{self.x}_C_method')
return
@dataclass
class D(B, C):
def D_method(self):
B.x = 'b'
self.B_method()
self.C_method()
class_D = D()
class_D.D_method()
Пример кода — попытка 2
from dataclasses import dataclass@dataclass
class A:
@property
def x(self):
return 'a'
@dataclass
class B(A):
@property
def x(self):
return 'a'
def B_method(self):
print(f'{self.x}_B_method')
return
@dataclass
class C(A):
@property
def x(self):
return 'a'
def C_method(self):
print(f'{self.x}_C_method')
return
@dataclass
class D(B, C):
def D_method(self):
B.x = 'b'
self.B_method()
self.C_method()
class_D = D()
class_D.D_method()
Пример вывода
b_B_methodb_C_method
Желаемый результат
b_B_methoda_C_method
Подробнее здесь: https://stackoverflow.com/questions/793 ... -method-in