У меня есть класс, A, который унаследован группой других классов. Некоторые из них имеют несколько функций, которые схожи, и было бы неплохо, если бы эти функции определялись где-то еще и вызывались классами, которые в них нуждаются. Но эти функции вызывают функции, определенные в суперклассе.Python - Можно ли передать себя внешней функции
class A():
def imp_func(*args):
# called by the child class functions
Class B(A):
def common_func(self):
# some stuff
self.imp_func(*args)
Так что я создал свои вспомогательные функции, которые принимают self object
в качестве аргумента, и я могу назвать imp_func
изнутри вспомогательных функций.
def helper_func(obj, some_args):
# some common stuff
obj.imp_func(*args)
class B(A):
def common_func(self):
# unique stuff
helper_func(self, some_args)
Это решает проблему.
Но должен ли я это делать? Это питоны?
Нет проблем с этим. 'self' является * просто * ссылкой на экземпляр, он не является частным и не опасен передавать его другим функциям. –
Зачем вам это нужно? 'B' наследует' imp_func' от 'A', поэтому вы можете вызвать' self.imp_func (* args) 'в' B.common_func' без проблем. –
@FlorianBrucker Существует не только одна функция, но пара, вызываемая из родительского класса, а некоторые вызываются пару раз, в нескольких функциях в нескольких классах. Это приводит к очень раздутым классам и функциям. Эти функции также требуют много времени. Использование вспомогательных классов позволит сэкономить время, усилия и сделать код чистым и более удобным. – elssar