2017-06-22 62 views
0

我導入類Foo具有默認參數dir如果執行功能doit。我如何更改默認dir?我需要繼承這個類,然後改變它,怎麼樣?類覆蓋__init__默認參數

class Foo(object): 
    def __init__(self, dir='xxx'): 
    self.bar = doit(dir) # fails because xxx is wrong 

回答

3

你爲什麼不只是提供一個不同的觀點,當你構建類的一個實例:

foo = Foo(dir='something else') 

BTW:dir是一個Python內置的,因此不能作爲變量的最佳選擇名稱。

,如果你想更改默認的,你的確可以繼承:

class MyFoo(Foo): 
    def __init__(self, d='somethig else'): 
     super().__init__(d=d) 
+0

'Foo(dir ='別的東西')''工作,謝謝 –

1

只需創建一個工廠函數Foo對象,並用它做:

def create_foo(): 
    return Foo(dir='my correct value goes here') 

既然你要導入Foo ,你可以走得更遠,只是影子Foo像這樣:

def Foo(): 
    import foo 
    return foo.Foo(dir='my correct value goes here') 

當然你可以繼承自Foo。一定要查找如何調用基類 類的構造函數。我發現很難記住,我只是最終谷歌它。每一個。單。時間。

順便說一句:看起來@hiro主角已經有超級通話的想法了。

+0

如果通過'想通'你的意思是'谷歌搜索'然後是的:我已經知道了!像你的方法一樣,順便說一下...... –