D.4 面向对象编程:两种不同的类对象
Python的原始类现在称为经典类。它们有很多缺陷,所以最终被新型类取代。这种转换从Python 2.2开始,一直延续到今天。
经典类使用下面的语法。
class ClassicClass:
pass
新型类使用这种语法。
class NewStyleClass(object):
pass
新型类比经典类具有更多的优势,而后者存在目的仅仅是为了兼容性,并且在Python 3中已完全废除。伴随着新型类,类型和类最后得以统一(见Guido的文章“Unifying Types and Classes in Python 2.2”以及PEP 252和PEP 253)。
为了迁移,Python 2.6 或更新版本中并没有添加其他改变,除非你将类装饰器视为一个3.x 特性。只是请注意,所有 2.2+版本都作为一个混合解释器存在,同时允许类对象和类实例。在Python 3中,前面例子中的两种语法都将会创建新型类。这种行为不会构成严重的移植问题,但是你确实需要注意到Python 3中不存在经典类。
