之间有什么区别
class A:
pass
和
class B(object):
pass
?出于某种原因,在方法中我不能使用super(A, self)
,但super(B, self)
效果很好。我想Py3k中没有这样的特性:)
答案 0 :(得分:6)
在2.x中,后者创建new-style class。在3.x中,两者都具有相同的效果,因为旧式类已被删除。
答案 1 :(得分:6)
第一个是旧式班。第二个是新式课程。有关差异的详细讨论,请参阅http://docs.python.org/tutorial/classes.html#multiple-inheritance。 super()
仅适用于新式类。 http://docs.python.org/library/functions.html#super
答案 2 :(得分:1)
答案 3 :(得分:1)
如上所述,第二种情况创建了一种新式的类,而第一种情况创建了一种旧式的类(不推荐使用!)。
为了消除旧样式的限制而创建的新样式类:旧样式类无法从内置类型继承。 对于新式类,您可以从内置类型继承;事实上,所有内置类型都来自“对象”:
>>> list.__mro__
(<type 'list'>, <type 'object'>)