首页 / PYTHON / 列表中的Python属性
列表中的Python属性
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了列表中的Python属性,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1043字,纯文字阅读大概需要2分钟。
内容图文
![列表中的Python属性](/upload/InfoBanner/zyjiaocheng/827/4559cc26838e470fa68506ac657af7db.jpg)
我是Python的新手,我刚刚发现了这些属性.当我在一个简单的变量上尝试它时,它工作得很好,但我不能使它在列表上工作.执行下面的代码时,它将调用两次getter而不是setter.我知道在我的例子中,该属性没有附加值,但它是为了简化.
class C:
def __init__(self):
self._x = [1, 2, 3]
@property
def x(self):
print("getter")
return self._x
@x.setter
def x(self, value):
print("setter")
self._x = value
c = C()
c.x[1] = 4
print(c.x[1])
有没有人知道我做错了什么?
最佳答案:
只有直接获取或设置属性时才使用setter / getter:
c.x # getter
c.x = [1,2,3] # setter
如果修改属性中的元素,则获取属性,然后设置相应的元素.你的例子相当于
d = c.x # getter again
d[1] = 4
您还可以使用__getitem__和__setitem__直接设置和获取特定项目.
class C:
def __init__(self):
self._x = [1, 2, 3]
@property
def x(self):
print("getter")
return self._x
@x.setter
def x(self, value):
print("setter")
self._x = value
def __getitem__(self, idx):
print("getitem")
return self._x[idx]
def __setitem__(self, idx, value):
print("setitem")
self._x[idx] = value
>>> c = C()
>>> c[1] = 3
setitem
>>> c.x
getter
[1, 3, 3]
>>> c[2]
getitem
3
内容总结
以上是互联网集市为您收集整理的列表中的Python属性全部内容,希望文章能够帮你解决列表中的Python属性所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。