我希望将类中的默认方法设置为通过__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
这可能或其他方式实现这一目标吗?
编辑:我知道目前的代码是不可能的,但是这样的功能就是我正在寻找的东西。
由于
答案 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