Python 类定义
有时候我看到一些类被定义为对象类的子类,比如:
class my_class(object):
pass
那么这和简单的定义有什么不同呢,比如:
class my_class():
pass
5 个回答
3
在Python 2.x中,如果你想使用新式类,你必须明确地从object
继承。如果你不声明一个类继承自object
,那么这个类就是旧式类。而在Python 3.x中,就不再需要明确继承自object
了,所以你可以直接用Python 2.x的旧式类语法来声明,比如class Klass: pass
,这样就会得到一个新式类(或者说就是一个类)。
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__']
8
这个语法用来声明一个新式类。