Вызов метода __call__ родителя в классе - PullRequest
8 голосов
/ 18 октября 2011

Я хотел бы вызвать родительский метод вызова из наследуемого класса

Код выглядит так

#!/usr/bin/env python

class Parent(object):

    def __call__(self, name):
        print "hello world, ", name


class Person(Parent):

    def __call__(self, someinfo):                                                                                                                                                            
        super(Parent, self).__call__(someinfo)

p = Person()
p("info")

И я получаю,

File "./test.py", line 12, in __call__
super(Parent, self).__call__(someinfo)
AttributeError: 'super' object has no attribute '__call__'

И я не могу понять почему, может кто-нибудь, пожалуйста, помогите мне с этим?

1 Ответ

14 голосов
/ 18 октября 2011

Функция super принимает производный класс в качестве первого параметра, а не базовый класс.

super(Person, self).__call__(someinfo)

Если вам нужно использовать базовый класс, вы можете сделать это напрямую (но помните, что это нарушит множественное наследование, поэтому вам не следует делать это, если вы не уверены, что это то, что вам нужно):

Parent.__call__(self, someinfo)
...