@@ -91,7 +91,7 @@ Python 中的有不少类它们的名称具有着特殊的意义。现在我们
9191
9292## 类变量与对象变量 {#class-obj-vars}[ ^ 3 ]
9393
94- 我们已经讨论过了类与对象 (即方法)的功能部分 ,现在让我们来学习它们的数据部分。数据部分——也就是字段——只不过是_绑定(Bound)_ 到类与对象的** 命名空间(Namespace)** 的普通变量。这就代表着这些名称仅在这些类与对象所存在的上下文中有效。这就是它们被称作_ “命名空间”_ 的原因。
94+ 我们已经讨论过了类与对象的功能部分 (即方法),现在让我们来学习它们的数据部分。数据部分——也就是字段——只不过是_绑定(Bound)_ 到类与对象的** 命名空间(Namespace)** 的普通变量。这就代表着这些名称仅在这些类与对象所存在的上下文中有效。这就是它们被称作_ “命名空间”_ 的原因。
9595
9696_ 字段(Filed)_ 有两种类型——类变量与对象变量,它们根据究竟是类还是对象_拥有_这些变量来进行分类。
9797
@@ -123,7 +123,7 @@ _字段(Filed)_有两种类型——类变量与对象变量,它们根据
123123how_many = classmethod (how_many)
124124```
125125
126- 你会观察到 ` __init__ ` 方法会用以初始化 ` Robot ` 这一带有名字的实例 。在这一方法中,我们将 ` population ` 按 1 往上增长,因为我们多增加了一台机器人。你还会观察到 ` self.name ` 的值是指定给每个对象的,这体现了对象变量的本质。
126+ 你会观察到 ` __init__ ` 方法会使用一个名字以初始化 ` Robot ` 实例 。在这一方法中,我们将 ` population ` 按 1 往上增长,因为我们多增加了一台机器人。你还会观察到 ` self.name ` 的值是指定给每个对象的,这体现了对象变量的本质。
127127
128128你需要记住你* 只能* 使用 ` self ` 来引用同一对象的变量与方法。这被称作* 属性引用(Attribute Reference)* 。
129129
@@ -133,7 +133,7 @@ how_many = classmethod(how_many)
133133
134134所有的类成员都是公开的。但有一个例外:如果你使用数据成员并在其名字中_使用双下划线作为前缀_ ,形成诸如 ` __privatervar ` 这样的形式,Python 会使用名称调整(Name-mangling)来使其有效地成为一个私有变量。
135135
136- 因此,你需要遵循这样的约定:任何在类或对象之中使用的对象其命名应以下划线开头 ,其它所有非此格式的名称都将是公开的,并可以为其它任何类或对象所使用。请记得这只是一个约定,Python 并不强制如此(除了双下划线前缀这点)。
136+ 因此,你需要遵循这样的约定:任何在类或对象之中使用的变量其命名应以下划线开头 ,其它所有非此格式的名称都将是公开的,并可以为其它任何类或对象所使用。请记得这只是一个约定,Python 并不强制如此(除了双下划线前缀这点)。
137137
138138> ** 针对 C++/Java/C# 程序员的提示**
139139>
@@ -169,7 +169,7 @@ how_many = classmethod(how_many)
169169
170170相反,如果我们_没有_在一个子类中定义一个 ` __init__ ` 方法,Python 将会自动调用基类的构造函数。
171171
172- 我们会观察到,我们可以通过在类名前面添加前缀连接类与方法,然后通过 ` self ` 变量调用并传递任何参数 ,来调用基类的方法。
172+ 我们会观察到,我们可以通过在方法名前面加上类名作为前缀,再将其传入 ` self ` 和其余变量中 ,来调用基类的方法。
173173
174174在这里你需要注意,当我们使用 ` SchoolMember ` 类的 ` tell ` 方法时,我们可以将 ` Teacher ` 或 ` Studtne ` 的实例看作 ` SchoolMember ` 的实例。
175175
0 commit comments