这是我的代码:
class A(object):
def test(self): pass
class B(A): pass
我的问题是,当我运行super(B).test时,我得到以下异常:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'super' object has no attribute 'test'
我看到了python文档:&#34; super(type) - &gt;未绑定的超级对象&#34;,为什么它没有工作?我希望有人可以举例说明使用&#34; super(type)&#34;对,谢谢
答案 0 :(得分:2)
答案 1 :(得分:1)
这真的很奇怪,正如zebo所说,这里没有必要使用super
,在test
的实例上调用B
会调用从test
继承的A
方法。演示:
class A(object):
def test(self):
print('In test', self)
class B(A): pass
b = B()
b.test()
<强>输出强>
In test <__main__.B object at 0xb715fb6c>
但是, 可以使用super
,如果您传递B
的实例:
super(B, b).test()
或
super(B, B()).test()
这两行都提供与前一代码相同的输出。这一切都适用于Python 2&amp; 3.(当然,您需要在Python 2中执行from __future__ import print_function
才能访问print
函数。)