При создании экземпляра C-вызовов B.__init__
, self.__class__
все равно будет C, поэтому вызов super () возвращает его к B.
При вызове super () используйте имена классов напрямую.Так что в B, звоните super(B, self)
, а не super(self.__class__, self)
(и для правильной меры, используйте super(C, self)
в C).В Python 3 вы можете просто использовать super () без аргументов для достижения того же самого