码迷,mamicode.com
首页 > 编程语言 > 详细

python之self

时间:2015-11-27 17:30:40      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:

#!/usr/bin/env Python
# coding=utf-8
__metaclass__ = type
class Person:
    def __init__(self, name):
        self.name = name
        print self #新增
        print type(self) #新增
其它部分省略。当初始化的时候,就首先要运行构造函数,同时就打印新增的两条。结果是:
<__main__.Person object at 0xb7282cec>
<class ‘__main__.Person‘>
证实了推理。self 就是一个实例(准确说是实例的引用变量)。
self 这个实例跟前面说的那个 girl 所引用的实例对象一样,也有属性。那么,接下来就规定其属性和属性对应的
数据。上面代码中:
self.name = name
就是规定了 self 实例的一个属性,这个属性的名字也叫做 name,这个属性的值等于初始化函数的参数 name 所
导入的数据。注意, self.name 中的 name 和初始化函数的参数name 没有任何关系,它们两个一样,只不
过是一种起巧合(经常巧合,其实是为了省事和以后识别方便,故意让它们巧合。),或者说是写代码的人懒
惰,不想另外取名字而已,无他。当然,如果写成self.xxxooo = name ,也是可以的。
其实,从效果的角度来理解,这么理解更简化:类的实例 girl 对应着 self,girl 通过 self 导入实例属性的所有数
据。
当然,self 的属性数据,也不一定非得是由参数传入的,也可以在构造函数中自己设定。比如:
#!/usr/bin/env Python
#coding:utf-8
__metaclass__ = type
class Person:
    def __init__(self, name):
        self.name = name
        self.email = "qiwsir@gmail.com" #这个属性不是通过参数传入的
info = Person("qiwsir") #换个字符串和实例化变量
print "info.name=",info.name
print "info.email=",info.email #info 通过 self 建立实例,并导入实例属性数据
运行结果
info.name= qiwsir
info.email= qiwsir@gmail.com #打印结果
通过这个例子,其实让我们拓展了对 self 的认识,也就是它不仅仅是为了在类内部传递参数导入的数据,还能在
初始化函数中,通过self.attribute 的方式,规定 self 实例对象的属性,这个属性也是类实例化对象的属性,即
做为类通过初始化函数初始化后所具有的属性。所以在实例 info 中,通过 info.email 同样能够得到该属性的数
据。在这里,就可以把 self 形象地理解为“内外兼修”了。或者按照前面所提到的,将 info 和 self 对应起来,s
elf 主内,info 主外。
怎么样?是不是明白了类的奥妙?

 

python之self

标签:

原文地址:http://www.cnblogs.com/glxsc/p/5001031.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!