在閱讀OpenStack的代碼時,我遇到了這個問題。對象的__init __()方法在python中做什麼?
一個名爲'Service'的類繼承了基類'object',然後在Service的__init__()
方法中調用了對象的__init__
。相關代碼如下所示:
類定義:
class Service(object):
和服務的init方法定義:
def __init__(self, host, binary, topic, manager, report_interval=None,
periodic_interval=None, *args, **kwargs):
和服務的init超(以下簡稱「對象」在這裏)的調用:
super(Service, self).__init__(*args, **kwargs)
我不明白,最後一次通話,object.__init__()
什麼實際你呢? 任何人都可以幫忙嗎?
參考文獻[Python's Super Considered Super](http://rhettinger.wordpress.com/2011/05/26/super-considered-super/)有很多幫助。謝謝! – 2011-12-23 09:42:09
'ColoredService'構造函數允許例如'foo ='bar''被傳遞,但是最終會失敗,因爲TypeError:object .__ init __()不帶參數。那麼在'super'調用'Service'和'Color'類中傳遞'* args'和'** kwargs'有什麼意義?你的例子在沒有它們的情況下也可以工作(並且會更健壯)。 – ekhumoro 2011-12-23 14:38:30
@ekhumoro該評論應針對OpenStack的作者。 ''args''部分來自他們的代碼,調用者必須尊重該簽名。我只是添加了* Color *和* ColoredService *以顯示MRO如何從* Service *鏈接到* Color *鏈接到* object *。 – 2011-12-23 18:09:22