第1章 __init__()
方法
__init__()
方法的重要性体现在两点。首先,初始化既是对象生命周期的开始,也是非常重要的一个步骤,每个对象都必须正确地执行了初始化才能够正常地工作。其次,__init()__
方法的参数可以多种形式来完成赋值。
因为__init()__
方法传参方式的多样化,意味着对象的初始化过程也会有多种。关于这一点我们将使用一些有代表性的例子对此进行详细说明。
在深入讨论__init__()
函数之前,需要看一下Python语言的类层次结构。简单地说,所有的类都可以继承object
类,在自定义类中可以提供比较操作的默认实现。
本章会演示简单对象初始化的不同形式(例如,打牌)。随后将深入探讨复杂对象的初始化过程,涉及集合以及使用策略和状态模式实现的玩家类。
1.1 隐式的基类——object
每个Python类的定义都会隐式继承自object
类,它的定义非常简单,几乎什么行为都不包括。我们可以创建一个object
实例,但很多事情无法完成,因为很多特殊方法的调用程序都会抛出异常。
对于任何自定义类,都会隐式继承object
。以下是一个类定义的示例(隐式继承了object
类)。
class X:
pass
下面是对自定义类进行交互的代码。
>>> X.__class__
<class 'type'>
>>> X.__class__.__base__
<class 'object'>
可以看到类定义就是对type
类的一个对象的类型声明,基类为object
。
相应地,派生自object
类中的对象方法也将继承各自相应的默认实现。在某些情况下,基类中一些特殊方法的默认行为也正是我们想要的。对于一些特殊情况,就需要重写这些方法。
1.2 基类中的__init__()
Get Python面向对象编程指南 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.