2015-06-20 37 views
-3

我在Python2.7中编写了一个简单的类,它应该使用@property功能。Python 2.7 @属性用法导致错误“全局名称_c__pro'未定义”

class c(): 
    def __init__(self): 
     __pro = 1 

    @property 
    def pro(self): 
     return __pro *10 

    def setpro(self, x): 
     __pro = x 

现在,当我从这个类来创建一个对象,并尝试访问pro财产,我得到以下错误:

>>> x = c() 
>>> x.pro 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "<stdin>", line 7, in pro 
NameError: global name '_c__pro' is not defined 

注意,整个事情是相同的蟒蛇commandline-里面写会话,所以它应该与丢失导入或错误的导入命名空间无关。

我在这里做错了什么?我如何重写它以访问pro

+0

实际上使其成为*产权*'上的self'而不是一个局部变量...!? – deceze

回答

1

您需要使用self.访问成员变量时:

def __init__(self): 
    self.__pro = 1 

@property 
def pro(self): 
    return self.__pro *10 
+0

当然! _(facepalm)_有时候最简单的错误是最难的......我会在延迟结束后的9分钟内接受。 –

相关问题