x.__class__Pythonインタープリターでは、との値type(x)は同等であると常に信じていました。しかし、次のことを行うと(Python 2.7、3.3、およびPyPy 2.0b1でも):
>>> import weakref
>>> x = set()
>>> y = weakref.proxy(x)
>>> x.__class__, isinstance(x, set), type(x)
(<type 'set'>, True, <type 'set'>)
>>> y.__class__, isinstance(y, set), type(y)
(<type 'set'>, True, <type 'weakproxy'>)
y.__class__のラップされたタイプに対応していることがわかりますweakref.proxy(これはweakref.proxy、変装の属性を置き換えるだけだと思います)。としてもisinstance識別yしsetます。
しかしtype、「真の」タイプを示しています- weakproxy。それで、引数の型を識別するために属性をtype使用しませんか?__class__この目的のために「より信頼性の高い」ソースを使用していますか?もしそうなら、私たちはそれに直接アクセスできますか?