2

如果这里的“重载”不是正确的术语,请原谅我......

我正在尝试做这样的事情:

class Length:

    def __init__(self, length = 0):
        self._length = length

    def twice(self, length = self._length):
        return length*2

如您所见,我试图self._lengthtwice(). Python 不喜欢这样。我明白了NameError: name 'self' is not defined

有没有一种好方法可以分配这样的默认值并得到我想要的?

4

1 回答 1

11

您不能将实例属性用作方法的默认参数。方法及其默认参数值是在定义类时定义的,但实例属性直到稍后实例化类时才存在。

你所要做的:

def twice(self, length=None):
    if length is None:
        length = self._length
    return length*2
于 2013-04-11T18:53:56.877 回答