求助, attribute is read-only

2016-07-25 10:56:31 +08:00
 yueyoum

代码里一直这么写的

class MyClass(object):
    __slots__ = ['xx', ]
    def __init__(self):
        self.xx = 1

但是刚才 用了 pycharm 2016.2 后 pycharm 提示说

'MyClass' object attribute 'xx' is read-only

这是什么意思? 既然是 read-only 为何代码一直能跑? 以前版本的 pycharm 没这个提示。

如何消除这个提示?

2876 次点击
所在节点    Python
4 条回复
LPeJuN6lLsS9
2016-07-26 12:07:12 +08:00
把设置>编辑器>inspections 里的 access to properties 关掉试试?我的 py3.4 没有出现,但重点是为什么会出现这提示
yueyoum
2016-07-26 13:49:28 +08:00
@hantsuki 谢谢, 按照你的办法, 现在没有那种提示了。

我也不知道为什么 __slots__ 中定义的 属性 就是只读的。。。
LPeJuN6lLsS9
2016-07-26 15:01:45 +08:00
问题的根源有点神奇: IDE 是对的,他说 MyClass 的属性 xx 是只读的,确实如此。虽然可以无视警告赋值,但是赋过一次之后再实例化 MyClass 就会报错,死在“ self.xx = 1 ”

应该是 py 的一个坑
yueyoum
2016-07-26 15:35:18 +08:00
@hantsuki
确实是 python 的坑

代码里不能有 MyClass.xx = XX
否则 类有了 类变量, xx 确实是 只读的...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/294698

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX