考虑一个基类:
class A(object):
def __init__(self, x):
self._x = x
def get_x(self):
#...
return self._x
def set_x(self, x):
#...
self._x = x
x = property(get_x, set_x)
和派生类:
class B(A):
def set_x(self, x):
#...
self._x = x**2
x = property(A.get_x, set_x)
是否有一种优雅的方法在B类中重载set_x(),而不重新声明它和属性x?谢谢.
解决方法:
试试这个:
class A(object):
def __init__(self):
self._x = 0
def get_x(self):
#...
return self._x
def set_x(self, x):
#...
self._x = x
x = property(get_x, lambda self,x : self.set_x(x))
class B(A):
def set_x(self, x):
#...
self._x = x**2
lambda给出的额外间接将使虚拟的set_x函数成为可能.
标签:python,properties,overloading
来源: https://codeday.me/bug/20190903/1795567.html