基类有这个:
def _management_form(self):
# code here
return form
management_form = property(_management_form)
Run Code Online (Sandbox Code Playgroud)
在我的派生类中,我正在尝试写这个:
self.management_form = self.myfunc()
Run Code Online (Sandbox Code Playgroud)
但当然它不起作用.它告诉我"无法设置属性",因为该属性没有setter.但我不想设置它,我想重新定义"managent_form"的含义.我尝试del self.managent_form先放,但这也不起作用.那我该如何解决它的问题呢?
您可以分配给类,而不是实例:
MyClass.management_form = property(self.myfunc)
Run Code Online (Sandbox Code Playgroud)
当然,这会改变所有实例(甚至是先前存在的实例)的类本身.如果这没关系,你也可以调用它一次,而不是每个派生类构造函数(我猜你现在正在做的).
否则,您可以通常的方式在派生类中覆盖它:
class MyOtherClass(MyClass):
def _new_mf(self):
# Better code
return form
management_form = property(new_mf)
Run Code Online (Sandbox Code Playgroud)