您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

列表中的Python属性

列表中的Python属性

仅当您直接获取或设置属性时,才使用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 2022/1/1 18:49:42 有375人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶