是否可以将 setter 作为方法调用?
Is it possible to call setter as a method?
鉴于 class,我可以使用 setter/getter 结构修改 _x
。但是现在可以通过调用方法来改变_x
吗?
我问的原因只是因为以后使用 lambda y: (c.x := y)
将某些东西定义为 lambda 会非常方便,它在 3.8 中有效,但在 3.7 中我们需要类似 [=15= 的东西].
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)
鉴于 class,我可以使用 setter/getter 结构修改 _x
。但是现在可以通过调用方法来改变_x
吗?
我问的原因只是因为以后使用 lambda y: (c.x := y)
将某些东西定义为 lambda 会非常方便,它在 3.8 中有效,但在 3.7 中我们需要类似 [=15= 的东西].
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)