|
In [8]:>...: info='from> ...: def __init__(self,myname):
...: self.name=myname
...: def printName(self):
...: print self.name
...:
In [9]: i1=c1('tom')
In [10]: i1.name
Out[10]: 'tom'
In [11]: i2=c1('jerry')
In [12]: i2.name
Out[12]: 'jerry'
In [13]: i1.info,i2.info
Out[13]: ('from> __init__() :这个是类的内置方法,从超类object继承而来,作用是在类实例化的时候,自动执行一遍(这也是为什么要以两个下划线开头的原因,python解释器根据这些标记知道其有特殊含义,会执行特殊的操作),如果没有这个函数,我们就得手动执行函数里面的内容。
self的作用:self起到类似记录实例名的作用,比如在本例中 i1=c1('tom'),python解释器会自动执行 c1.__init_(i1,'tom') 操作,所以这里self就被替换成了i1实例名,而且因为python强制self放在第一位,由此,我们可以猜想,python是根据位置来传递实例名,而不是根据self关键字来传递的,事实也证明确实如此。
证明:
In [19]:>
...: info='from> ...: def __init__(s,myname):
...: s.name=myname
...: def printName(s):
...: print s.name
...:
In [20]: i3=c1('hello')
In [21]: i3.name
Out[21]: 'hello'
In [22]: i4=c1('word')
In [23]: i4.name
Out[23]: 'word'
In [24]: i3.info,i4.info
Out[24]: ('from> In [25]: c1.__init__(i4,'jerry')
In [26]: i4.name
Out[26]: 'jerry'
其实类跟函数是很相似的,它也只是个可执行对象,只不过多了一些相关的控制机制 |
|
|