是否可以调用 setter 作为方法?



给定以下类,我可以使用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)

最新更新