Я импортирую несколько классов из библиотеки с помощью общего метода, например
class BarClass1:
def __init__(self):
pass
def bar(self, x):
return x + 1
class BarClass2:
def __init__(self):
pass
def bar(self, x):
return x + 2
class BarClass3:
def __init__(self):
pass
def bar(self, x):
return x + 3
Я хочу добавить ведение журнала к методу bar каждого класса, и для этой цели я создаю дочерние элементы для этих классов в следующим образом:
def log_something(x):
print(f'input is {x}')
class DerivedBarClass1(BarClass1):
def __init__(self):
super().__init__()
def bar(self, x):
log_something(x)
return super().bar()
class DerivedBarClass2(BarClass2):
def __init__(self):
super().__init__()
def bar(self, x):
log_something(x)
return super().bar()
class DerivedBarClass3(BarClass3):
def __init__(self):
super().__init__()
def bar(self, x):
log_something(x)
return super().bar()
Я чувствую, что делаю много повторений кода, есть ли более простой способ сделать это? Мое главное ограничение - невозможность изменить код в BarClass1
, BarClass2
или BarClass3
.