第四章技术总结

1 轻松看对象

(1)类

在这里,我们用关键字class来定义一个类。类的名字就是鸟(Bird)。括号 里有一个关键词object,也就是“东西”的意思,即某一个个体。


我们定义了两个量,一个用于说明鸟类有羽毛(feather),另一个用于说明鸟类的繁殖 方式(reproduction),这两个量称为类的属性(attribute)。


我们给鸟类新增一个方法属性,就是表示鸟叫的方法chirp()。方法chirp()看 起来很像一个函数。它的第一个参数是self,是为了在方法内部引用对象自身,则打印出新的一个属性(sound)。

(2)对象

比如我设一个summer,这个是一个小鸟,这个小鸟属于鸟类。则

现在,我们就可 以使用鸟类中已经写好的代码了。作为对象的summer将拥有鸟类的属性和方法。对 属性的引用是通过对象.属性(object.attribute)的形式实现的。比如说:


我们还可以再加一个属于鸟的属性。

如果不同的鸟具有它特殊的颜色,那么我们加一个属于它的特殊属性。


对于类的 __init__()方法,Python会在每次创建对象时自动调用。因此,我们可以在 __init__()方法内部来初始化对象属性:

除了操作对象属性外,self参数还有另外一个功能,就是能让我们在一个方法 内部调用同一类的其他方法,比如:



2  继承者们


(1)子类:

类别本身还可以进一步细分成子类。比如说,鸟类可以进一步分成鸡、天鹅。 在面向对象编程中,我们通过继承(Inheritance)来表达上述概念。

(2)属性覆盖:

在继承的过程中,我们可以在子类中增加父类不存在的属性,从而 增强子类的功能。此外,我们还可以在子类中替换父类已经存在了的属性,比如:

通过对方法的覆盖,我们可以彻底地改变子类的行为。但有的时候,子类的行 为是父类行为的拓展。这时,我们可以通过super关键字在子类中调用父类中被覆盖 的方法,比如:


2  那些年,错过的对象


(1)列表对象

我们可以用help()来说明文档,也可以用help添加自己对文档的说明,如:


程序中的pass是Python的一个特殊关键字,用于说明在该语法结构中“什么都 不做”。这个关键字保持了程序结构的完整性。

(2)关于列表(list)的隐藏功能:



(3)元组与字符串对象

元组与列表一样,都是序列。但元组不能改变更变内容。所以元组只能进行查询操作


字符串是特殊的元组,因此可以执行元组的方法:




(4)词典对象

词典同样是一个类:



3  意想不到的对象


(1)循环对象

当一个像for这样的循环语法调用循环对象时,它会在每次循环的时候调用 __next__()方法,直到StopIteration出现。循环接收到这个异常,就会知道循环 已经结束,将停止调用__next__()。

我们用内置函数iter()把一个列表转变为循环对象。这个循环对象将拥有 __next__()方法。我们多次调用__next__()方法,将不断返回列表的值,直到出 现异常:

我们可以借助生成器(generator)来自定义循环对象。生成器的编写方法和 函数定义类似,只是在return的地方改为yield。生成器中可以有多个yield。当生 成器遇到一个yield时,会暂停运行生成器,返回yield后面的值。当再次调用生成 器的时候,会从刚才暂停的地方继续运行,直到下一个yield。生成器自身又构成一 个循环对象,每次循环使用一个yield返回的值。

下面是一个生成器:


该生成器共有三个yield,如果用作循环对象时,会进行三次循环。

(2)函数对象

前面说过,在Python中,函数也是一种对象。实际上,任何一个有__call__() 特殊方法的对象都被当作是函数。比如下面的例子:



(3)模块对象

我们直 接引入标准库中的模块time:

我们之前用import 语句引入其他文件中定义的函数,实际上就是引入模块对象的属性,比如:

(4)异常对象

以在程序中加入异常处理的try结构,捕捉程序中出现的异 常。实际上,我们捕捉到的也是一个对象,比如:

你可能感兴趣的:(第四章技术总结)