0
Monkey可以在Python類中修補一個屬性嗎? 「猴子修補python」的快速谷歌返回了大量修補methods
的結果,但沒有提及更改類中的字段。猴子修補類中的屬性?
修補方法:
- Adding a Method to an Existing Object
- Duck punching a property
- changing methods and attributes at runtime
但是,就像我說的,沒有改變的類屬性提及/場。
爲了給出一個有點人爲的例子,假設我有一個類,它有一個multiprocessing
queue
,我想用threading Queue.Queue
修補它。
import threading
import multiprocessing
class MyClassWithAQueue(object):
def__init__(self):
self.q = multiprocessing.Queue()
有沒有辦法補丁?嘗試在施工前通過類名簡單分配它看起來什麼都不做。
if __name__ == '__main__':
MyClassWithAQueue.q = Queue.Queue()
myclass = MyClassWithAQueue()
print myclass.q
# still shows as a multiprocessing queue
>>><multiprocessing.queues.Queue object at 0x10064493>
有沒有辦法做到這一點?
您必須創建的實例原始類然後重寫該字段的實際值,或者通過替換構造函數來爲該類補丁。但我不推薦使用猴子補丁。通常有更好的方法來解決你的問題。 – Palec
首先你需要什麼猴子補丁? –