程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

'无法在Python中使用新样式属性设置属性'

发布于2019-08-24 10:45     阅读(1175)     评论(0)     点赞(25)     收藏(3)


我正在尝试使用新式属性声明:

class C(object):
    def __init__(self):
        self._x = 0

    @property
    def x(self):
        print 'getting'
        return self._x

    @x.setter
    def set_x(self, value):
        print 'setting'
        self._x = value

if __name__ == '__main__':
    c = C()
    print c.x
    c.x = 10
    print c.x

并在控制台中查看以下内容:

pydev debugger: starting
getting
0
File "\test.py", line 55, in <module>
c.x = 10
AttributeError: can't set attribute

我究竟做错了什么?PS:旧式宣言工作正常。


解决方案


文档说明以下关于使用装饰器形式property

请务必为其他函数指定与原始属性相同的名称(在本例中为x)。

我不知道为什么会这样,因为如果你使用property函数来返回一个属性,你可以随意调用这些方法。

因此,您需要将代码更改为以下内容:

@x.setter
def x(self, value):
    'setting'
    self._x = value


所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/56742/552b19478d29c5dad0cf/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

25 0
收藏该文
已收藏

评论内容:(最多支持255个字符)