关于python类定义的一个基本问题[重复]
Posted
技术标签:
【中文标题】关于python类定义的一个基本问题[重复]【英文标题】:A basic question about python class definitions [duplicate] 【发布时间】:2011-05-26 13:07:33 【问题描述】:和说有什么区别:
class foo:
pass
和
class foo(object):
pass
?
【问题讨论】:
对象中应该是小写的'o' 那么,什么是'calss'呢? :P 也许编辑你的标题:) 【参考方案1】:后者声明一个new-style class。
【讨论】:
多么棒的社区。谢谢大家,请原谅我提出重复的问题;) 请记住,它仅在 Python 2.x 中有所不同。在 Python 3.x 中,两个类定义都创建“新式”类(唯一可用的类类型)。 @reza:如果答案是您想要的,请使用左侧的勾号接受它。【参考方案2】:“类和实例有两种风格:旧式(或经典)和新式。” http://docs.python.org/reference/datamodel.html#new-style-and-classic-classes
【讨论】:
【参考方案3】:旧式类不扩展内置的“对象”类型。新式班就可以。如果您正在编写新代码,请使用新型类。如果您正在使用已经在使用旧样式类的旧代码,那么……我说使用它只是为了确保所有类的行为方式相同。
以下是差异的简要说明:http://docs.python.org/release/2.5.2/ref/node33.html 以下是更多链接集合:http://www.python.org/doc/newstyle/
我会注意到 Python 2.2 中引入了新样式类,因此,如果您看到使用旧样式类的代码,并且您打算将它与 Python 2.7 一起使用,您可能想要运行一个快速测试以确保它没有老化到不能在较新版本的 Python 中工作。
【讨论】:
大多数老式类的情况只是人们懒得把那个“对象”放在类定义中。这并不是代码时代的真正迹象。 我们中的一些人并不懒惰,只是健忘或匆忙。以上是关于关于python类定义的一个基本问题[重复]的主要内容,如果未能解决你的问题,请参考以下文章