<分区>
我有类,共享相同的属性和相同的 getter,但不同的 setter。作为一个简单的、无用的例子,像这样:
class Spam():
@property
def foo(self):
return self.bar
@foo.setter
def foo(self, foo):
self.bar = foo
class Eggs(Spam):
@foo.setter
def foo(self, foo):
self.bar = ' '.join(['Egg\'s foo:', foo])
尝试运行此模块会引发以下错误:
Traceback (most recent call last):
File "./test.py", line 13, in <module>
class Eggs(Spam):
File "./test.py", line 14, in Eggs
@foo.setter
NameError: name 'foo' is not defined
为了让这项工作如期进行,我需要重新定义 Eggs.foo
:
class Eggs(Spam):
@property
def foo(self):
return super().foo
@foo.setter
def foo(self, foo):
self.bar = ' '.join(['Egg\'s foo:', foo])
有没有办法避免这种属性的重新定义? 因为如果像我一样在多个子类中有很多这样的 getter 和 setter,这会非常烦人。