我正在创建一个具有字典属性的对象。我想控制元素允许的键和值。我(我想)知道如何在设置时控制键和值,但在添加时则不知道。例如:
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装饰器来完成....?