2017-10-19 11 views
0

再帰関数を静的メソッドとして実装する正しい方法は何ですか?静的メソッドとしての再帰関数

ここで私はそれをatmで動作させています。クリーンメモリフットプリントを残し、これを達成するための「より良い」方法がある場合、私はあなたが正しい名前検索を実行するために、クラスのインスタンスを必要としない

など、より多くのニシキヘビに見える、
class MyClass(object): 
    @staticmethod 
    def recursFun(input): 
     # termination condition 
     sth = MyClass().recursFun(subinput) 
     # do sth 
     return sth 
+0

正直なところ、Pythonicを探していたら、私はちょうど 'staticmethod'を使用しません –

+0

oop pythonで他にどのようにしますか? – r2d2oid

+0

私は単にそれをクラスの一部にしてモジュールレベルの機能にしません。詳細な説明なしでは難しい。 –

答えて

4

を思っていました;クラス自体が行います。あなたが名前検索を実行すると、recursive_functionがスコープになりませんので、

class MyClass(object): 
    @staticmethod 
    def recursive_function(input): 
     # ... 
     sth = MyClass.recursive_function(subinput) 
     # ... 
     return sth 

修飾名が必要です。唯一MyClass.recursive_functionとなります。

0

は、それ作る代わりにclassmethod:これはまた、あなたがする必要がある場合は、それが簡単に、クラスをサブクラス化することができ

class MyClass(object): 

    @classmethod 
    def recursFun(celf, input): 
     # termination condition 
     sth = celf.recursFun(subinput) 
     # do sth 
     return sth 
    #end recursFun 

#end MyClass 

関連する問題