當傳遞一個參數時,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'>)