>>> class A(object):
... def some(self):
... pass
...
>>> a=A()
>>> a.some
<bound method A.some of <__main__.A object at 0x7f0d6fb9c090>>
因爲我需要在交給「a.some」後才能訪問「a」。如何在Python中查找綁定方法的實例?
>>> class A(object):
... def some(self):
... pass
...
>>> a=A()
>>> a.some
<bound method A.some of <__main__.A object at 0x7f0d6fb9c090>>
因爲我需要在交給「a.some」後才能訪問「a」。如何在Python中查找綁定方法的實例?
開始Python 2.6中,你可以使用特殊的屬性__self__
:
>>> a.some.__self__ is a
True
im_self
在py3k淘汰。
>>> class A(object):
... def some(self):
... pass
...
>>> a = A()
>>> a
<__main__.A object at 0x7fa9b965f410>
>>> a.some
<bound method A.some of <__main__.A object at 0x7fa9b965f410>>
>>> dir(a.some)
['__call__', '__class__', '__cmp__', '__delattr__', '__doc__', '__format__', '__func__', '__get__', '__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'im_class', 'im_func', 'im_self']
>>> a.some.im_self
<__main__.A object at 0x7fa9b965f410>
嘗試下面的代碼,看看,如果它可以幫助你:
a.some.im_self
你想這樣的事情我想:
>>> a = A()
>>> m = a.some
>>> another_obj = m.im_self
>>> another_obj
<__main__.A object at 0x0000000002818320>
im_self
是類的實例對象。
只是爲了讓它完全清楚:如果你的Python 3.如果你正在使用Python 2,請使用此,相當於是其他人張貼了`im_self`。 – 2011-01-13 11:45:31