Ich habe eine Klasse, A, die von einer Reihe anderer Klassen geerbt wird. Einige davon haben ein paar Funktionen, die ähnlich sind, und es wäre schön, diese Funktionen irgendwo anders definiert zu haben und von den Klassen aufgerufen zu bekommen, die sie brauchen. Diese Funktionen rufen jedoch Funktionen auf, die in der Superklasse definiert sind.Python - Ist es in Ordnung, selbst an eine externe Funktion zu übergeben
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)
Ich habe meine Helferfunktionen erstellt also, die die self object
als Argument nehmen und ich kann die imp_func
aus dem Inneren der Helferfunktionen aufrufen.
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)
Dies löst das Problem.
Aber sollte ich das tun? Ist das Pythonic?
Es gibt absolut kein Problem damit. 'self' ist * nur * ein Verweis auf die Instanz, es ist nicht privat und es ist nicht gefährlich, es an andere Funktionen weiterzugeben. –
Warum müssen Sie das tun? 'B' erbt' imp_func' von 'A', so dass Sie' self.imp_func (* args) 'in' B.common_func' ohne Probleme aufrufen können. –
@FlorianBrucker Es gibt nicht nur eine Funktion, sondern ein paar, die von der Elternklasse aufgerufen werden, und einige werden mehrmals in mehreren Funktionen in mehreren Klassen aufgerufen. Dies führt zu sehr aufgeblähten Klassen und Funktionen. Es ist auch zeitaufwendig, diese Funktionen zu schreiben. Durch die Verwendung von Hilfsklassen sparen Sie Zeit und Aufwand und machen den Code sauberer und wartungsfreundlicher. – elssar