在python中,如果我将一个变量赋给方法,这意味着什么?

时间:2012-11-03 21:35:29

标签: python cherrypy metaobject

阅读CherryPy教程我遇到了这个

class HelloWorld(object):
    def index(self):
        return "Hello World!"
    index.exposed = True

这是什么意思?是在方法索引的局部范围内公开变量?如果是这样,我可以公开改变的价值吗?我认为它与python的MetaObject协议有关,它将类定义公开为对象本身。

2 个答案:

答案 0 :(得分:4)

函数是Python中的第一类对象。函数定义创建一个函数对象并将其绑定到函数的名称。函数对象可以有属性,这就是你在这里看到的。函数属性的生命周期约束了函数对象的生命周期,而函数内局部变量的生命周期则绑定到函数的单个执行。它们是完全分开的。

答案 1 :(得分:2)

不,它不是函数索引的局部变量,而是它是该函数的属性。 是的,你也可以在功能之外修改它。

阅读关于功能属性的PEP 232

示例:

In [2]: def foo():pass
   ...: 

In [3]: foo.bar="text"

In [4]: foo.bar
Out[4]: 'text'