Обычно самым большим препятствием при использовании композиции вместо наследования является большое количество шаблонных методов пересылки, которые необходимо написать для делегирования функциональности компонентам класса:
Код: Выделить всё
def some_func(self, x):
return self.component.somefunc(x)
Go решает эту проблему, предоставляя методы членов родительского класса, поэтому шаблонный код не требуется. Мне было интересно, возможно ли что-то подобное в Python, учитывая отражающую и динамическую природу системы типов. (Предупреждение: я не использовал Go и далек от эксперта по Python.)
Отвечаю на свой вопрос ниже примером, который, кажется, работает. Я буду рад любым отзывам о том, есть ли у этого метода какие-либо недостатки или есть ли лучшая альтернатива.
Подробнее здесь:
https://stackoverflow.com/questions/798 ... rding-stru