python - 关于在 Python 中定义一个 setter

标签 python decorator getter-setter python-decorators magic-methods

假设我们有以下代码:

class A:
       def __init__(self):
           self.x = [p for p in range(10)]
        
       def __getitem__(self, key):
           return self.x[key]

a = A()
print a[2] #will return a.x[2] = 2

现在如何为 a[i] 定义 setter?我将如何定义装饰器?

简单属性的过程非常简单,但 Python 如何理解,在这种情况下,我想为 a[i] 定义一个 setter(类似于 @a[我].setter) ?

最佳答案

您的代码中没有任何装饰器,也不需要装饰器来支持项目分配。

只需执行 object.__setitem__() method对于你的类(class):

class A:
    def __init__(self):
        self.x = [p for p in range(10)]

    def __getitem__(self, key):
        return self.x[key]

    def __setitem__(self, key, value):
        self.x[key] = value

关于python - 关于在 Python 中定义一个 setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32744445/

相关文章:

用于自动 getter-setter 方法的 C++ 类模板 - 好的/坏的做法?

python - Jupyter导入错误: No module named

python - 如何跟踪形成 celery 和弦标题的组内各个任务的进度?

python - 装饰器,不带括号调用函数?

c# - 装饰器模式 - 从装饰器访问包装对象中的值

java - 将数据存储在 servlet 的 DTO 中...?

python - celery 导入错误 : No module named proj

Python cProfile 结果似乎没有加起来

python - 根据对象值在基于类的 View Django 中应用装饰器

c++ - 在 getter 中返回字符串引用的正确方法