0

クラス内のメソッドのデフォルトを、メソッドを介して渡されたものに設定したいと思います__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

これは可能ですか、それともこれを達成する別の方法ですか?

編集:私はこの現在のコードが不可能であることを知っていますが、このように機能するものが私が探しているものです。

ありがとう

4

2 に答える 2

4

デフォルトの引数値は、定義スコープの関数定義の時点で評価されますが、self関数呼び出し中にのみ使用可能な引数です。

例を参照してください。

i = 5
def f(arg = i): print arg
i = 6
f()

5.python -tutorでの視覚化を出力します。

引数をデフォルトNoneにしてコードにそのテストを追加するのは一般的なパターンです。

def test(self, loc = None):
    if loc is None:
       loc = self.loc
    print loc
于 2013-01-17T19:49:24.813 に答える
2

このようなことをします:

def test(self, loc = None):
    if loc is None:
       loc = self.loc
于 2013-01-17T19:39:45.407 に答える