Я очень новичок в python, поэтому надеюсь, что я не пропущу слишком много необходимых знаний, чтобы понять это, но ...Разница между супер (Foo, self) и супер (Foo, self .__ class__)?
У меня есть класс с некоторыми свойствами, и я пытаюсь переопределить сеттер на один из них похож на этот пример:
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)
... и как это ди ffers из этой линии, которая не работает:
super(Bar, self).x.fset(self, value)
Любые указания будут оценены.
Это имеет большой смысл. Спасибо за очень четкий ответ! – Ocelot20