我对Python非常陌生,希望我没有错过太多必要的知识来理解这个问题,但是...
我有一个类,其中包含一些属性,我正在尝试覆盖其中一个属性的setter,类似于以下示例:
class Foo(object):
def __init__(self):
self._x = True
@property
def x(self):
return self._x
@x.setter
def x(self, value):
self._x = value
class Bar(Foo):
@property
def x(self):
return super().x
@x.setter
def x(self, value):
print('x set')
super(Bar, self.__class__).x.fset(self, value)
bar = Bar()
# Prints 'x set' as expected:
bar.x = True
这很好用,但我真的不理解为什么这一行代码能够以它现在的方式运行...
super(Bar, self.__class__).x.fset(self, value)
...以及它与不起作用的这行代码有何不同:
super(Bar, self).x.fset(self, value)
如果您能提供任何指导,我们将不胜感激。