python类定义

时间:2011-03-10 14:27:20

标签: python

有些时候我看到一些类被定义为对象类的子类,如

class my_class(object):
    pass

如果与简单定义不同,如何

class my_class():
    pass

5 个答案:

答案 0 :(得分:7)

此语法声明new-style class

答案 1 :(得分:4)

第一个是新的样式类,第二个是旧样式类。

修改

In [1]: class A:
   ...:     pass
   ...: 

In [2]: class B(object):
   ...:     pass
   ...: 

In [3]: a = A()

In [4]: b = B()

In [5]: dir(a)
Out[5]: ['__doc__', '__module__']

In [6]: dir(b)
Out[6]: 
['__class__',
 '__delattr__',
 '__dict__',
 '__doc__',
 '__format__',
 '__getattribute__',
 '__hash__',
 '__init__',
 '__module__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '__weakref__']

答案 2 :(得分:3)

对于Python 3.x,没有区别。在Python 2.x中,派生自object创建一个类new-style,而不提供基类将为您提供旧式类。

答案 3 :(得分:3)

对于Python 2.x中的new-style类,必须显式继承自object。不声明类继承自object会给你一个旧式的类。在Python 3.x中,不再需要显式继承object,因此您可以使用Python 2.x旧式类语法class Klass: pass在Python 3.x中声明并返回一个新的 - 风格(或只是一个类)。

答案 4 :(得分:2)

这是“新”风格,您的问题类似于 Python class inherits object