在 Python 中定义 setter

Posted

技术标签:

【中文标题】在 Python 中定义 setter【英文标题】:On defining a setter in Python 【发布时间】:2015-12-21 01:24:37 【问题描述】:

假设我们有以下代码:

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] 的设置器?我将如何定义装饰器?

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

【问题讨论】:

【参考方案1】:

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

只需为您的班级实现object.__setitem__() method:

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 中定义 setter的主要内容,如果未能解决你的问题,请参考以下文章

Java_get和set方法

在Python中定义Main函数

在 Python 中定义一个 LibreOffice Calc 自定义函数

python中怎么调用自定义函数

如何在Python中定义静态变量

python中怎么在自定义函数调用另外一个函数中的参数