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