Python isinstance
函數如何在內部工作?有什麼我可以做的改變它的結果,比如在一個類裏面定義一個特殊的函數?這是我的使用情況:使'isinstance'與裝飾器一起工作
class Decorator:
def __init__(self, decorated):
self._decorated = decorated
def __call__(self):
return self._decorated()
@Decorator
class Foo:
pass
f = Foo()
# How can I make this be true?
isinstance(f, Foo)
Decorator
行爲幾乎像一個mixin,除了混合是不恰當的位置。有什麼辦法可以讓上面的代碼工作?我還要指出的是,isinstance
線還提供了以下錯誤:
isinstance(f, Foo)
TypeError: isinstance() arg 2 must be a type or tuple of types
什麼是你真正想實現這個? –
你還沒有告訴我們你的裝飾器做了什麼,所以很難知道什麼會起作用。考慮使用裝飾器更改類本身的屬性,然後返回類,或者用元類而不是裝飾器重寫該類。 – agf