Python @property

在一次调用sleekxmpp库的时候,遇到一个问题,就是想获取一个很简单的jid,结果在调用一个方法的时候,不让我加括号,否则报错:“'unicode'objectisnot callable”一下子世界观凌乱了,后来才知道原来是@property的原因:

class Person:
    def __init__(self):
        print ("init....")
        self.aaa = 6
   
    @property    
    def aa(self):
        return self.aaa
    
    @aa.setter
    def aa(self,value):
         self.aa = value
        
if __name__ == '__main__':
    
    p = Person()
    print p.aa
    p.aa = 5
    print p.aa

以上代码如果误写为p.aa()同样会报错:“'int' object is not callable”

备注:小笔python版本为2.73 其他版本暂时未测。

原文地址:https://www.cnblogs.com/nishilunhui/p/2919119.html