有些时候我看到一些类被定义为对象类的子类,如
class my_class(object):
pass
如果与简单定义不同,如何
class my_class():
pass
答案 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