Skip to content

Commit ff58949

Browse files
committed
Fix typo problem and change some translations.
1 parent 232e0e1 commit ff58949

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed

10.functions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
函数概念可能是在任何不平凡的软件(无论使用的是何种编程语言)中**重要的构建块,所以我们接下来将在本章中探讨有关函数的各个方面。
66

7-
函数可以通过关键字 `def` 来定义。这一关键字后跟一个函数的*标识符*名称,再跟一对圆括号,其中可以包括一些变量的名称,再以分号结尾,结束这一行。随后而来的语句块是函数的一部分。下面的案例将会展示出这其实非常简单:
7+
函数可以通过关键字 `def` 来定义。这一关键字后跟一个函数的*标识符*名称,再跟一对圆括号,其中可以包括一些变量的名称,再以冒号结尾,结束这一行。随后而来的语句块是函数的一部分。下面的案例将会展示出这其实非常简单:
88

99
案例(保存为 `functon1.py`):
1010

14.oop.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -143,13 +143,13 @@ how_many = classmethod(how_many)
143143

144144
面向对象编程的一大优点是对代码的**重用(Reuse)**,重用的一种实现方法就是通过**继承(Inheritance)**机制。继承最好是想象成在类之间实现**类型与子类型(Type and Subtype)**关系的工具。
145145

146-
现在假设你希望编写一款程序来追踪一所大学里的老师和学生。他们具有一些共同的特征,例如姓名、年龄和地址。他们同样也有一些独特的特征,一如教师的薪水、课程与假期,学生的成绩和学费。
146+
现在假设你希望编写一款程序来追踪一所大学里的老师和学生。有一些特征是他们都具有的,例如姓名、年龄和地址。另外一些特征是他们独有的,一如教师的薪水、课程与假期,学生的成绩和学费。
147147

148-
你可以为每一种类型创建两个独立的类,并对它们进行处理。但增添一条共同特征将意味着将其添加进两个独立的类。这很快就会使程序变得笨重。
148+
你可以为每一种类型创建两个独立的类,并对它们进行处理。但增添一条共有特征就意味着将其添加进两个独立的类。这很快就会使程序变得笨重。
149149

150-
一个更好的方法是创建一个公共类叫作 `SchoolMember`然后让教师和学生从这类中_继承(Inherit)_,也就是说他们将成为这一类型(类)的子类型,而我们就可以向这些子类型中添加某些独特的特征
150+
一个更好的方法是创建一个公共类叫作 `SchoolMember`然后让教师和学生从这个类中_继承(Inherit)_,也就是说他们将成为这一类型(类)的子类型,而我们就可以向这些子类型中添加某些该类独有的特征
151151

152-
这种方法有诸多优点。如果增加或修改了 `SchoolMember` 的任何功能,它将自动反映在子类型中。举个例子,你可以通过简单地向 SchoolMember 类进行操作,来为所有老师与学生添加一条新的 ID 卡字段。不过,对某一子类型作出的改动不会影响到其它子类型。另一大优点是如果你可以引用某一老师或学生对象看作 `SchoolMember` 的对象,这在某些情况下会大为有用,例如在清点学校中的成员数量时。这被称作**多态性(Polymorphism)**,在任何情况下,如果父类型希望,子类型都可以被替换,也就是说,该对象可以被看作父类的实例。
152+
这种方法有诸多优点。如果我们增加或修改了 `SchoolMember` 的任何功能,它将自动反映在子类型中。举个例子,你可以通过简单地向 SchoolMember 类进行操作,来为所有老师与学生添加一条新的 ID 卡字段。不过,对某一子类型作出的改动并不会影响到其它子类型。另一大优点是你可以将某一老师或学生对象看作 `SchoolMember` 的对象并加以引用,这在某些情况下会大为有用,例如清点学校中的成员数量。这被称作**多态性(Polymorphism)**,在任何情况下,如果父类型希望,子类型都可以被替换,也就是说,该对象可以被看作父类的实例。
153153

154154
同时还需要注意的是我们重用父类的代码,但我们不需要再其它类中重复它们,当我们使用独立类型时才会必要地重复这些代码。
155155

@@ -165,15 +165,15 @@ how_many = classmethod(how_many)
165165

166166
**它是如何工作的**
167167

168-
要想使用继承,在定义类[^6]时我们需要在类后面跟一个包含基类名称的元组。然后,我们会注意到基类的 `__init__` 方法是通过 `self` 变量被显示调用的,因此我们可以初始化对象的基类部分。这一点很重要,需要牢记——因为我们在 `Teacher``Student` 子类中定义了 `__init__` 方法,Python 不会自动调用基类 `SchoolMember` 的构造函数,你必须自己显式地调用它。
168+
要想使用继承,在定义类[^6]时我们需要在类后面跟一个包含基类名称的元组。然后,我们会注意到基类的 `__init__` 方法是通过 `self` 变量被显示调用的,因此我们可以初始化对象的基类部分。下面这一点很重要,需要牢记——因为我们在 `Teacher``Student` 子类中定义了 `__init__` 方法,Python 不会自动调用基类 `SchoolMember` 的构造函数,你必须自己显式地调用它。
169169

170170
相反,如果我们_没有_在一个子类中定义一个 `__init__` 方法,Python 将会自动调用基类的构造函数。
171171

172172
我们会观察到,我们可以通过在类名前面添加前缀连接类与方法,然后通过 `self` 变量调用并传递任何参数,来调用基类的方法。
173173

174174
在这里你需要注意,当我们使用 `SchoolMember` 类的 `tell` 方法时,我们可以将 `Teacher``Studtne` 的实例看作 `SchoolMember` 的实例。
175175

176-
同时,你会发现被调用的是子类型的 `tell` 方法,而不是 `SchoolMember``tell` 方法。理解这一问题的一种思路是 Python *总会*从当前的实际类型中开始寻找方法,在本例中即是如此。如果它找不到对应的方法,它就会在该类所属的基本类中依顺序逐个寻找属于基本类的方法,这个基本类是在定义类时我们在后面跟的元组中指定的
176+
同时,你会发现被调用的是子类型的 `tell` 方法,而不是 `SchoolMember``tell` 方法。理解这一问题的一种思路是 Python *总会*从当前的实际类型中开始寻找方法,在本例中即是如此。如果它找不到对应的方法,它就会在该类所属的基本类中依顺序逐个寻找属于基本类的方法,这个基本类是在定义子类时后跟的元组指定的
177177

178178
这里有一条有关术语的注释——如果继承元组(Inheritance Tuple)中有超过一个类,这种情况就会被称作**多重继承(Multiple Inheritance)**
179179

0 commit comments

Comments
 (0)