Skip to content

Commit e72f193

Browse files
committed
p3
1 parent c32b7b9 commit e72f193

File tree

1 file changed

+14
-14
lines changed

1 file changed

+14
-14
lines changed

208.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
>>> class Girl(object): #Python 3: class Girl:
2929
breast = 90
3030

31-
在真实世界中,breast就是Girl的属性,你到某度上去搜索一下有关的关键词,就发现breast是一个重要属性了。所以,如果要建立类`Girl`,它必须有`breast`属性。那么这个属性的值,就关系到某类Girl的颜值了。这里的类`Girl`都是`breast`为90的,也就是所有符合此类的girl,其breast都是90。你可以想象其颜值高低了,是否符合你的喜好。
31+
在真实世界中,breast就是Girl的属性,你到某度上去搜索一下有关的关键词,就发现breast是一个重要属性了。所以,如果要建立类`Girl`,它必须有`breast`属性。那么这个属性的值,就关系到某类Girl的颜值了。这里的类`Girl`都是`breast`为90的,你可以想象其颜值高低了,是否符合你的喜好。
3232

3333
大招一出,为之一振,顿时困意消退。下面就请回到前面那个类`A`,继续枯燥地学习。
3434

@@ -72,7 +72,7 @@
7272
>>> Girl.__dict__
7373
mappingproxy({'breast': 40, '__weakref__': <attribute '__weakref__' of 'Girl' objects>, '__dict__': <attribute '__dict__' of 'Girl' objects>, '__module__': '__main__', '__doc__': None})
7474

75-
对于不同版本的Python,上述显示结果也有所差异但你都能看到属性的详细信息。类的特殊属性`__dict__`所显示的是这个类的属性名称以及该属性的完整数据。
75+
对于不同版本的Python,上述显示结果也有所差异但你都能看到属性的详细信息。类的特殊属性`__dict__`所显示的是这个类的属性名称以及该属性的完整数据。
7676

7777
下面列出类的几种特殊属性的含义,读者可以一一查看。
7878

@@ -118,7 +118,7 @@
118118
>>> Girl()
119119
<__main__.Girl object at 0x00000000035262E8>
120120

121-
但是,如果不将实例赋给某个变量,它就马上被Python视为垃圾回收了。只有把它赋给某个变量——实例也是对象——我们通过变量才能操作这个实例
121+
`canglaoshi = Girl()`本质上就是将变量`canglaoshi`与实例对象`Girl()`建立引用关系,这种关系同以前见过的赋值语句`a = 2`是同样的效果
122122

123123
那么,一个实例的建立过程是怎样进行的呢?
124124

@@ -275,7 +275,7 @@ foo.y就是新建的一个实例属性,它没有影响原来的实例属性foo
275275
如果类中变量引用可变数据,情形会有所不同。因为可变数据能够进行原地修改。
276276

277277
>>> class B(object):
278-
... y = [1,2,3]
278+
... y = [1, 2, 3]
279279

280280
这次定义的类中,变量引用的是一个可变对象。
281281

@@ -323,9 +323,9 @@ foo.y就是新建的一个实例属性,它没有影响原来的实例属性foo
323323

324324
##`self`的作用
325325

326-
类里面的任何方法,第一个参数是self,但是在实例化的时候,似乎没有这个参数什么事儿(不显示地写出来),那么self是干什么的呢
326+
类里面的任何方法,第一个参数是self,但是在创建实例的时候,似乎没有这个参数什么事儿(不显示地写出来),那么`self`是干什么的呢
327327

328-
self是一个很神奇的参数
328+
`self`是一个很神奇的参数
329329

330330
将前文的`Person`类简化一下,
331331

@@ -346,7 +346,7 @@ self是一个很神奇的参数。
346346
<__main__.Person object at 0x0000000003146C50>
347347
<class '__main__.Person'>
348348

349-
这说明`self`就是实例,在看看刚刚建立的那个实例
349+
这说明`self`就是类`Person`的实例,再看看刚刚建立的那个实例`girl`
350350

351351
>>> girl
352352
<__main__.Person object at 0x0000000003146C50>
@@ -357,12 +357,12 @@ self是一个很神奇的参数。
357357

358358
当创建实例的时候,实例变量作为第一个参数,被Python解释器悄悄地传给了`self`,所以我们说在初始化函数中的`self.name`就是实例的属性。
359359

360-
注意,`self.name`中的name和初始化函数的参数`name`没有任何关系,它们两个一样,只不过是一种起巧合(经常巧合,其实是为了省事和以后识别方便,故意让它们巧合),或者说是写代码的人懒惰,不想另外取名字而已,无他。当然,如果写成`self.xxxooo = name`,也是可以的。
360+
注意,`self.name`中的name和初始化函数的参数`name`没有任何关系,它们两个一样,只不过是一种起巧合(经常巧合,其实是为了省事和以后识别方便,故意让它们巧合),或者说是写代码的人懒惰,不想另外取名字而已,无他。当然,如果写成`self.xxxooo = name`,也是可以的。
361361

362362
>>> girl.name
363363
'canglaoshi'
364364

365-
所以,我们得到实例属性,但是,在类的外面不能这样用:
365+
这是我们得到的实例属性,但是,在类的外面不能这样用:
366366

367367
>>> self.name
368368
Traceback (most recent call last):
@@ -372,7 +372,7 @@ self是一个很神奇的参数。
372372

373373
##数据流转
374374

375-
只有将类实例化,通过实例来执行各种方法,应用实例的属性,才是最常见的现象
375+
将类实例化,通过实例来执行各种方法,应用实例的属性,是最常见的操作
376376

377377
所以,对此过程中的数据流转一定要弄明白。
378378

@@ -413,15 +413,15 @@ self是一个很神奇的参数。
413413

414414
![](./2images/20801.png)
415415

416-
创建实例`girl = Person('canglaoshi')`,注意观察图上的箭头方向。`girl`这个引用实例的变量传给了和类中的`self`简单理解为:实例变量与self对应,实例变量主外,self主内。
416+
创建实例`girl = Person('canglaoshi')`,注意观察图上的箭头方向。`girl`这个引用实例对象的变量传给了`self``self`也引用了实例对象。简化理解为:self是实例(不求准确,只求表面现象),实例变量主外,self主内。
417417

418-
`"canglaoshi"`是一个具体的数据,通过初始化函数中的`name`参数,传给`self.name`前面已经讲过,`self`也是一个实例,可以为它设置属性,`self.name`就是一个属性,经过初始化函数,这个属性的值由参数`name`传入,现在就是`"canglaoshi"`
418+
`"canglaoshi"`是一个具体的数据,通过初始化函数中的`name`参数,传给`self.name`——准确地说谁传了对象引用给实例的属性`name`前面已经讲过,`self`是一个实例,可以为它设置属性,`self.name`就是一个属性,经过初始化函数,这个属性的值由参数`name`传入,现在就是`"canglaoshi"`
419419

420420
在类`Person`的其它方法中,都是以`self`为第一个或者唯一一个参数。注意,在Python中,这个参数要显明写上,在类内部是不能省略的。这就表示所有方法都承接`self`实例对象,它的属性也被带到每个方法之中。例如在方法里面使用`self.name`即是调用前面已经确定的实例属性数据。当然,在方法中,还可以继续为实例`self`增加属性,比如`self.breast`。这样,通过`self`实例,就实现了数据在类内部的流转。
421421

422422
如果要把数据从类里面传到外面,可以通过`return`语句实现。如上例子中所示的`getName`方法。
423423

424-
因为引用实例的变量`girl``self`是对应的,实际上,在类里面也可以用`girl`代替`self`。例如,做如下修改:
424+
因为引用实例对象的变量`girl``self`,所以,在类里面也可以用`girl`代替`self`。例如,做如下修改:
425425

426426
#!/usr/bin/env python
427427
# coding=utf-8
@@ -442,7 +442,7 @@ self是一个很神奇的参数。
442442

443443
canglaoshi
444444

445-
这个例子说明,在实例化之后,实例变量`girl`传给个`self`。但是,提醒读者,千万不要用上面的修改了的那个方式。因为那样写使类没有独立性,这是大忌。
445+
这个例子说明,在实例化之后,`girl``self`都引用了实例对象。但是,提醒读者,千万不要用上面的修改了的那个方式。因为那样写使类没有独立性,这是大忌。
446446

447447
------
448448

0 commit comments

Comments
 (0)