Разница между super (). Method () и super (self .__ class __, self) .method () [duplicate]

На этот вопрос уже есть ответ здесь:

При вызове super () в производном классе я могу передать себя .__ class__? [Дубликат] 2 ответа

Вот код, который я пытался написать:

class A(object):
    def bind_foo(self):
        old_foo = self.foo
        def new_foo():
            old_foo()
            #super().foo()
            super(self.__class__,self).foo()

        self.foo = new_foo

    def __init__(self):
        print("A __init__")          

    def foo(self):
        print("A foo")

class B(A):
    def __init__(self):
        print("B __init__")
        super().__init__()

    def foo(self):
        print("B foo")
        super().foo()

class C(A):
    def __init__(self):
        print("C __init__")
        super().__init__()
        super().bind_foo()

    def foo(self):
        print("C foo")    

b  = B()
b.foo()

c = C()
c.foo()

Класс B и A - ожидаемое поведение, то есть когда я звонюb.foo()это вызываетa.foo() также сsuper(), Класс C - это попытка подражать поведению дочернего B и родительского A, но на этот раз я не хочу указывать явноsuper().foo() в дочернем классе, но я все еще хочу родителяfoo() быть вызванным. Работает как положено.

Тем не менее, я не совсем понимаю, что подA.bind_fooЯ должен использоватьsuper(self.__class__,self).foo() скорее, чемsuper().foo. super().foo дает

"SystemError: super(): no arguments". 

Может кто-нибудь объяснить, почему это так?

Ответы на вопрос(1)

Ваш ответ на вопрос