在Python中获取对象的父命名空间?
在 python 中可以使用“.” 为了访问对象的字典项目。 例如:
class test( object ) :
def __init__( self ) :
self.b = 1
def foo( self ) :
pass
obj = test()
a = obj.foo
从上面的示例中,有“a”对象,是否可以从它获取对“obj”的引用,“obj”是分配的“foo”方法的父命名空间? 比如把obj.b改成2?
In python it's possible to use '.' in order to access object's dictionary items. For example:
class test( object ) :
def __init__( self ) :
self.b = 1
def foo( self ) :
pass
obj = test()
a = obj.foo
From above example, having 'a' object, is it possible to get from it reference to 'obj' that is a parent namespace for 'foo' method assigned? For example, to change obj.b into 2?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在绑定方法上,您可以使用三个特殊的只读参数:
测试周围:
这里有一件有趣的事情需要注意,它为您提供了有关如何调用方法的提示:
基本上, < em>im_self 绑定方法的属性发生变化,以允许在调用 im_func 时将其用作第一个参数
On bound methods, you can use three special read-only parameters:
Testing around:
There is an interesting thing to note here, that gives you a hint on how the methods are being called:
Basically, im_self attribute of a bound method changes, to allow using it as the first parameter when calling im_func
Python 2.6+(包括 Python 3)
您可以使用 绑定方法的
__self__
属性,用于访问该方法绑定到的实例。Python 2.2+(仅限 Python 2.x)
您还可以使用
im_self
属性,但这不向前兼容 Python 3。Python 2.6+ (including Python 3)
You can use the
__self__
property of a bound method to access the instance that the method is bound to.Python 2.2+ (Python 2.x only)
You can also use the
im_self
property, but this is not forward compatible with Python 3.因为 python2.6 中
im_self
和im_func
的同义词分别是__self__
和__func__
。im*
属性在 py3k 中完全消失了。 所以你需要将其更改为:since python2.6 synonyms for
im_self
andim_func
are__self__
and__func__
, respectively.im*
attributes are completely gone in py3k. so you would need to change it to: