2013-01-17 75 views
0

我希望我的方法在類中的默認設置設置爲通過__init__方法傳入的內容。這樣的事情:基於類__init__ args的Python方法默認值

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 

這是可能的或其他方式來實現?

編輯:我知道這當前的代碼是不可能的,但是這樣的功能是我正在尋找的東西。

感謝

+0

具有self.loc當我運行它。 – Jeff

回答

4

默認參數的值在函數定義在定義範圍的點進行評估,但self只是函數調用期間提供的參數。

參見一個例子:

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

將打印5. Visualization上蟒導師。

這是一個常見的模式爲默認的參數None並在代碼添加一個測試爲:在測試錯誤出了方法調用

def test(self, loc = None): 
    if loc is None: 
     loc = self.loc 
    print loc 
2

做這樣的事情:

def test(self, loc = None): 
    if loc is None: 
     loc = self.loc