【问题标题】:In python, What does it mean if I assign a variable to a method?在python中,如果我将变量分配给方法,这意味着什么?
【发布时间】:2012-10-24 04:54:21
【问题描述】:
阅读我遇到的 CherryPy 教程
class HelloWorld(object):
def index(self):
return "Hello World!"
index.exposed = True
那是什么意思?在方法索引的局部范围内暴露了一个变量?如果是这样,我可以改变暴露的价值吗?我认为这与 python 的 MetaObject 协议将类定义公开为对象本身有关。
【问题讨论】:
标签:
python
cherrypy
metaobject
【解决方案1】:
函数是 Python 中的一等对象。函数定义创建一个函数对象并将其绑定到函数的名称。函数对象可以具有属性,这就是您在此处看到的。函数属性的生命周期与函数对象的生命周期绑定,而函数内部的局部变量的生命周期与函数的单次执行绑定。它们是完全分开的。
【解决方案2】:
不,它不是函数索引的局部变量,而是该函数的属性。
是的,你也可以在函数之外修改它。
阅读PEP 232关于函数属性。
示例:
In [2]: def foo():pass
...:
In [3]: foo.bar="text"
In [4]: foo.bar
Out[4]: 'text'