@property用于dict属性更新

时间:2017-07-06 22:10:33

标签: python dictionary properties

我正在创建一个具有字典属性的对象。我想控制元素允许的键和值。我(我想)知道如何在设置时控制键和值,但在添加时则不知道。例如:

class A(object):
    def __init__(self):
        self.__d = {}
    @property
    def d(self):
        return self.__d
    @d.setter
    def d(self, d):
        # putting a condition on the keys and values
        self.__d = {k:d[k] for k in d if k < 10 and d[k] >0}

a = A()
a.d = {1:2, 2:3, 11:5, 5:-4}
print(a.d) #{1: 2, 2: 3} YAY!!

a.d[25] = -100
print(a.d) #{1: 2, 2: 3, 25: -100} BOOOOOOO (I wanted to filter out 25:-100)

我知道我可以创建一个新的dict,比如继承自dict的对象,但我觉得应该可以使用@property装饰器来完成....?

0 个答案:

没有答案