我希望c成为a + b。
class A:
def __init__(self, a, b):
self.a = a
self.b = b
@property
def c(self):
return self.b + self.a
@c.setter
def c(self, value):
self.b = value - self.a
return self.b
这很好。
ex = A(1,2)
(ex.b, ex.c) # returns (2,3)
ex.c = 10
(ex.b, ex.c) # returns (9,10)
但是如果我想让b成为字典呢?
class A:
def __init__(self, a, b):
self.a = a
self.b = b
@property
def c(self, key):
return self.b[key] + self.a
@c.setter
def c(self, key, value):
self.b[key] = value - self.a
return self.b[key]
不喜欢这样。
ex = A(1,{'test' : 2})
(ex.b['test'],ex.c['test']) # TypeError: c() missing 1 required positional argument: 'key'
我想原因是ex.c在看到['test']部分之前就已经解析了。
如何避免这个问题?
尝试一下: