[英]MutableSequence to pass as a list in isinstance() check
我基於collections.MutableSequence
構建了一個類似於列表的自定義類:
class MyList(collections.MutableSequence):
etc... behave mostly like a list...
value = MyList([1,2,3])
在處理列表數據之前,第三方庫將運行以下檢查:
def check_correct_type(value):
assert isinstance(value, list)
我不希望在將其類似列表的自定義對象傳遞給內置庫之前將其轉換為內置列表。
有沒有一種優雅的方法可以使MyList
的實例看起來像是isinstance(MyList([1,2,3]), list)
檢查中的list
的實例?
不,如果沒有從list
繼承,您的類實例將無法通過該測試。 您必須繼承list
才能通過該測試。
您可以嘗試從MutableSequence
和list
繼承; 然后,將在list
查找未由您的類或MutableSequence
實現的任何方法或屬性,因此您可能會得到不需要的其他方法,而這些方法或方法可能會出現異常:
class MyList(collections.MutableSequence, list):
您還可以monkeypatch check_correct_type()
函數,只要它確實是像這樣的獨立函數:
def my_check_correct_type(value):
assert isinstance(value, collections.MutableSequence)
third_party_library.check_correct_type = my_check_correct_type
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.