0

我希望将类中的方法默认值设置为通过__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

这是可能的还是实现这一目标的另一种方式?

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

谢谢

4

2 回答 2

4

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

看一个例子:

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

将打印 5. python-tutor 上的可视化。

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

def test(self, loc = None):
    if loc is None:
       loc = self.loc
    print loc
于 2013-01-17T19:49:24.813 回答
2

做这样的事情:

def test(self, loc = None):
    if loc is None:
       loc = self.loc
于 2013-01-17T19:39:45.407 回答