18
私は他のクラスのクラスに継承されているクラス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)
これは問題を解決します。
私はこれを行う必要がありますか?これはPythonicですか?
それにはまったく問題はありません。 'self'はインスタンスへの参照です。privateではなく、他の関数に渡すのも危険です。 –
なぜこれを行う必要がありますか? 'B'は' A'から 'imp_func'を継承しているので、問題なく' B.common_func'で 'self.imp_func(* args)'を呼び出すことができます。 –
@FlorianBruckerただ一つの関数ではなく、親クラスから呼び出され、いくつかは複数のクラスの複数の関数で2,3回呼び出されます。これは非常に肥大したクラスと機能につながります。これらの関数を書くのにも時間がかかります。ヘルパークラスを使用すると、時間と労力を節約し、コードをきれいに保守しやすくなります。 – elssar