web-dev-qa-db-ja.com

Python-selfを外部関数に渡すことはできますか

私にはクラスAがあり、これは他の多くのクラスに継承されています。これらのいくつかには類似したいくつかの関数があり、それらの関数をどこか別の場所で定義し、それらを必要とするクラスによって呼び出すのは良いことです。ただし、これらの関数は、スーパークラスで定義された関数を呼び出します。

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ですか?

33
elssar

それには何の問題もありません-selfは他のオブジェクトと同じであり、そのタイプ/動作のオブジェクトが歓迎されるあらゆるコンテキストで使用できます。

Pythonでは、標準ライブラリで例示されているように、selfのインスタンス getpassedtofunctionsandalsotomethodsandeven演算子allthetime .

43
user4815162342