如果'重载'不是正确的术语,请原谅我......
我正在尝试做这样的事情:
class Length:
def __init__(self, length = 0):
self._length = length
def twice(self, length = self._length):
return length*2
正如您所看到的,我正在尝试在self._length
的参数中引用twice()
。 Python虽然不喜欢这个。我得到NameError: name 'self' is not defined
。
有没有一种很好的方法来分配这样的默认值并得到我想要的东西?
答案 0 :(得分:11)
您不能将实例属性用作方法的默认参数。这些方法及其默认参数值是在定义类时定义的,但实例属性在实例化类之前不存在。
你必须这样做:
def twice(self, length=None):
if length is None:
length = self._length
return length*2