Python方法默认基于类__init__ args

时间:2013-01-17 19:37:47

标签: python

我希望将类中的默认方法设置为通过__init__方法传递的方法。像这样:

class Foo(object):

    def __init__(self, loc=None):
        self.loc = loc

    def test(self, loc=self.loc):
        print loc


test = Foo()
test.test()
>>> None

test = Foo('foobar')
test.test()
>>> foobar

这可能或其他方式实现这一目标吗?

编辑:我知道目前的代码是不可能的,但是这样的功能就是我正在寻找的东西。

由于

2 个答案:

答案 0 :(得分:4)

默认参数值在定义范围内的函数定义点进行计算,但self是仅在函数调用期间可用的参数。

查看示例:

i = 5
def f(arg = i): print arg
i = 6
f()

将在python-tutor上打印5. Visualization

将参数默认为None并在代码中为其添加测试是一种常见模式:

def test(self, loc = None):
    if loc is None:
       loc = self.loc
    print loc

答案 1 :(得分:2)

做这样的事情:

def test(self, loc = None):
    if loc is None:
       loc = self.loc