2009-10-08 69 views
4

在Python,我可以通过以下方式定义一个类 '富':Python的 '对象' 型和继承

class foo: 
    pass 

class foo(object): 
    pass 

的区别是什么?我试图使用函数issubclass(foo,object)来查看它是否对于这两个类定义都返回True。它不是。

 
IDLE 2.6.3  
>>> class foo: 
     pass 

>>> issubclass(foo, object) 
False 
>>> class foo(object): 
     pass 

>>> issubclass(foo, object) 
True 

谢谢。

回答

9

继承自object使班级成为“新式班级”。这里有一个旧式与新式的讨论:What is the difference between old style and new style classes in Python?

正如@CrazyJugglerDrummer在下面评论的那样,在Python 3中,所有的类都是“新风格”的类。在Python 3,以下两个声明是完全等价的:

class A(object): 
    pass 

class A: 
    pass 
+1

另外:在py 3中,一切都自动成为新的风格类 – 2009-10-09 00:01:47

2

首先创建一个“旧式”的类,它已被取消,在Python 3已被删除你不应该在Python 2中使用它。 X。请参阅Python data model的文档。

2

老式新型对象......他们有悦目不同的行为,例如在构造函数,或在多重继承的方法解析顺序。