给定以下类,我可以使用setter/getter结构修改_x
。但是现在可以通过调用方法来更改_x
吗?
我问的原因只是因为以后使用lambda y: (c.x := y)
将某些东西定义为 lambda 非常方便,这在 3.8 中有效,但在 3.7 中我们需要类似lambda y: c.x.some_method_maybe(y)
的东西。
class C:
def __init__(self):
self._x = 0
@property
def x(self):
return self._x
@x.setter
def x(self,_x):
print(_x)
self._x = _x
c = C()
c.x = 999 # this works
c.x.some_method_maybe(999) # call setter of x explicitly?
不使用 lambda,只需使用函数:
def modify(y): c.x = y
或者,如果您讨厌可读性:
type(c).x.__set__(c, 5)