2015-06-23 24 views
2

我想知道在Python中是否有一種支持type()內置函數的神奇方法,它允許您設置要返回的自定義值。python中是否有一種魔術方法()?

+4

這將實現什麼?你認爲你可以用這個解決什麼問題? –

+1

簡短的回答是:不,沒有這樣的方法。你可以在實例上切換類型(只是將一個不同的類對象分配給'instance .__ class__',但這意味着行爲也會發生變化。 –

+0

我純屬學術興趣 –

回答

5

不,沒有這樣的方法。實例的類型不是在查詢時可以動態更改的,因爲這是特定於類型的行爲,但是您突然無法確定定義該行爲的類型!

可以分配不同的類instance.__class__,但隨後你會實質性地改變該實例的行爲,它不是實例本身時type()被應用到實例然後改變類型。

而不是使用type(),而是使用isinstance()issubclass()函數,並使用抽象基類型;它是類型對象,然後分別負責聲明特定的類或實例作爲給定類型的子類或實例。他們可以通過__issubclass__ and __isinstance__ hooks執行此操作。