我導入類Foo
具有默認參數dir
如果執行功能doit
。我如何更改默認dir
?我需要繼承這個類,然後改變它,怎麼樣?類覆蓋__init__默認參數
class Foo(object):
def __init__(self, dir='xxx'):
self.bar = doit(dir) # fails because xxx is wrong
我導入類Foo
具有默認參數dir
如果執行功能doit
。我如何更改默認dir
?我需要繼承這個類,然後改變它,怎麼樣?類覆蓋__init__默認參數
class Foo(object):
def __init__(self, dir='xxx'):
self.bar = doit(dir) # fails because xxx is wrong
你爲什麼不只是提供一個不同的觀點,當你構建類的一個實例:
foo = Foo(dir='something else')
BTW:dir
是一個Python內置的,因此不能作爲變量的最佳選擇名稱。
,如果你想更改默認的,你的確可以繼承:
class MyFoo(Foo):
def __init__(self, d='somethig else'):
super().__init__(d=d)
只需創建一個工廠函數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主角已經有超級通話的想法了。
如果通過'想通'你的意思是'谷歌搜索'然後是的:我已經知道了!像你的方法一樣,順便說一下...... –
'Foo(dir ='別的東西')''工作,謝謝 –