【问题标题】:Calling parent's __call__ method within class在类中调用父类的 __call__ 方法
【发布时间】:2011-12-10 00:47:12
【问题描述】:

我想从继承的类中调用父级的 call 方法

代码如下所示

#!/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__'

我不知道为什么,有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: python inheritance methods superclass


    【解决方案1】:

    super 函数将 派生的 类作为其第一个参数,而不是基类。

    super(Person, self).__call__(someinfo)
    

    如果你需要使用基类,你可以直接做(但要注意这会破坏多重继承,所以你不应该这样做,除非你确定这是你想要的):

    Parent.__call__(self, someinfo)
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-02
    • 2015-08-31
    • 2017-10-25
    • 2016-02-14
    • 1970-01-01
    • 2019-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多