我正在為我正在處理的項(xiàng)目使用第三方庫(PySphere)。PySphere提供了一個(gè)簡單的API與VMware進(jìn)行交互。但是,這是一個(gè)普遍的問題,并非特定于此庫。該庫的簡單用法是獲取VM對象,然后對其執(zhí)行各種操作:vm_obj = vcenter.get_vm_by_name("My VM")vm_obj.get_status()vm_obj.power_on()我想向vm_obj類添加一些方法。這些方法是特定于VM上使用的OS的,因此不值得將其提交回庫?,F(xiàn)在,我一直在這樣做:set_config_x(vm_obj, args)這似乎很不可思議。我希望能夠?qū)⑽业姆椒ㄌ砑拥街衯m_obj class,而無需直接修改第三方庫中的類定義。
1 回答

慕容3067478
TA貢獻(xiàn)1773條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以將任何可調(diào)用項(xiàng)附加到類對象(即vm_obj.__class__
)上,但該函數(shù)將不是方法,也不會(huì)具有self
屬性。要實(shí)現(xiàn)真正的方法,可以使用標(biāo)準(zhǔn)庫中的new
模塊:
vm_obj.set_config_x = new.instancemethod(callableFunction, vm_obj, vm_obj.__class__)
其中callableFunction
以self
(vm_obj
)作為第一個(gè)參數(shù)。
添加回答
舉報(bào)
0/150
提交
取消