递归函数作为静态方法

时间:2017-10-19 17:50:18

标签: python recursion static

将递归函数实现为静态方法的正确方法是什么?

以下是我如何使用它。我想知道是否有更好的"实现这一目标的方式,留下更清晰的内存占用,看起来更加pythonic等。

class MyClass(object):
    @staticmethod
    def recursFun(input):
        # termination condition
        sth = MyClass().recursFun(subinput)
        # do sth
        return sth

2 个答案:

答案 0 :(得分:4)

您不需要该类的实例来执行正确的名称查找;班级本身也会这样做。

recursive_function

限定名称是必需的,因为当您执行名称查找时,MyClass.recursive_function将不在范围内;只有<filter> <whitelist addUncoveredFilesFromWhitelist="true"> <directory suffix=".php">../src</directory> </whitelist> </filter> <logging> <log type="coverage-clover" target="./clover.xml"/> </logging> 会。

答案 1 :(得分:0)

改为classmethod

class MyClass(object):

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

#end MyClass

如果需要,这也可以更容易地对类进行子类化。