【问题标题】:On defining a setter in Python在 Python 中定义 setter
【发布时间】: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)?

【问题讨论】:

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


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2019-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-18
      • 2020-12-27
      • 2015-11-01
      • 2012-09-09
      • 2017-10-31
      相关资源
      最近更新 更多