python类定义[重复]
Posted
技术标签:
【中文标题】python类定义[重复]【英文标题】:python class definition [duplicate] 【发布时间】:2011-07-12 18:33:20 【问题描述】:有时我看到一些类被定义为对象类的子类,如
class my_class(object):
pass
如果与简单的定义不同
class my_class():
pass
【问题讨论】:
***.com/questions/332255/… 在旧版本的 Python 中,后者是语法错误。 【参考方案1】:此语法声明new-style class。
【讨论】:
+∞:哦,看这个问题已经在文档中回答了。我希望人们多读书,少问。【参考方案2】:第一个是新样式类,第二个是旧样式类。
编辑
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__']
【讨论】:
对象的子类化是否会为类 my_class 带来任何继承的属性?【参考方案3】:对于 Python 3.x,没有区别。在 Python 2.x 中,派生自 object
会生成一个类 new-style,而不提供基类会给你一个老式的类。
【讨论】:
【参考方案4】:对于 Python 2.x 中的 new-style 类,您必须显式继承自 object
。不声明一个类继承自 object
会给你一个老式的类。在 Python 3.x 中,不再需要从 object
显式继承,因此您可以在 Python 3.x 中使用 Python 2.x 旧样式类语法 class Klass: pass
声明并取回新样式(或只是一个类)类。
【讨论】:
【参考方案5】:这是“新”样式,您的问题类似于 Python class inherits object
【讨论】:
以上是关于python类定义[重复]的主要内容,如果未能解决你的问题,请参考以下文章