关于编程语言:关于Python类定义的基本问题

A basic question about python class definitions

本问题已经有最佳答案,请猛点这里访问。

这两种说法有什么区别:

1
2
class foo:
    pass

1
2
class foo(object):
    pass


后者声明了一个新的样式类。


"类和实例有两种风格:旧风格(或经典)和新风格。"http://docs.python.org/reference/datamodel.html新样式和经典类


旧样式类不会扩展内置的"object"类型。新的样式类可以。如果要编写新代码,请使用新样式的类。如果您使用的是已经使用旧样式类的旧代码,那么……我说,跟着它走,只是为了确保所有的类都以相同的方式工作。

这里有一个很好的差异概要:http://docs.python.org/release/2.5.2/ref/node33.html下面是更多链接的集合:http://www.python.org/doc/newstyle/

我要注意的是,在python 2.2中引入了新的样式类,所以如果您看到使用旧样式类的代码,并且要将其与python 2.7一起使用,那么您可能需要运行一个快速测试,以确保它不会太老,以致于在更新版本的python中不起作用。