type
当传递一个参数时,函数如何确定它传递的对象的类型?
是否可以通过对对象的 class
定义进行一些特定的更改来自定义它返回的内容?
编辑:
我怀疑它是否使用该object.__class__
属性,因为尽管__getattribute__
在查询时重写了类的函数以返回一些任意值,__class__
但当类型检查时返回实际类型type
。
>>> class Foo(object):
... def __getattribute__(self, name):
... if name == "__class__":
... return type("Bar", (), {})
... else:
... return super(Foo, self).__getattribute__(name)
...
>>> bar = Foo()
>>> bar.__class__ , type(bar)
(<class '__main__.Bar'>, <class '__main__.Foo'>)