2

ここで「過負荷」という用語が適切でない場合はご容赦ください...

私はこのようなことをしようとしています:

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

このようなデフォルトを割り当てて、必要なものを取得する良い方法はありますか?

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 に答える