【发布时间】:2011-11-22 19:39:05
【问题描述】:
Python 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 必须是类型或类型的元组
【问题讨论】:
-
你到底想用这个实现什么?
-
你还没有告诉我们你的装饰器是做什么的,所以很难知道什么会起作用。考虑使用装饰器更改类本身的属性,然后返回该类,或者使用元类而不是装饰器重写该类。
标签: python decorator isinstance