使用__init__方法
上一篇 /
下一篇 2008-03-06 18:57:53
/ 个人分类:Python
)eY&X4Y-WGn Z[~0 __init__方法在类的一个对象被建立时,马上运行。这个方法可以用来对你的对象做一些你希望的初始化 。先给个简单的例子:
6f0X7HjEind I^0C&wJ*FXr9z0 >>> class Person:51Testing软件测试网2a3h2AxwrH
def __init__(self, xingming):
l!zai2jn`0 ... self.name = xingming51Testing软件测试网:l!_ dR1S(I^9C,{
def sayHi(self):
u3s8E@
e0 ... print 'Hello, my name is', self.name51Testing软件测试网"Dw)m/K
F.EKz!dOf?
51Testing软件测试网,Wb'["y}1XgwR1v >>> p = Person('Swaroop')51Testing软件测试网!l9f(J#n!~y2bZ-[A6q
>>> p.sayHi()
/S4[K#MYI0BbA/\K3]4l(Y~0 输出
fAm'p7c\A5nz0 $ python class_init.py
Ak9s0g
{0 Hello, my name is Swaroop
WT4?7a*{;t&p;@&yH051Testing软件测试网&V(\2YC\;jS 这里我们没有专门调用__init__方法,只是在创建一个类的新实例的时候,把参数包括在圆括号内跟在类名后面,从而传递给__init__方法。这是这种方法的重要之处。之后,我们就能够在我们的方法中使用self.name域。这在sayHi方法中得到了验证。
f,N2uD2G1v051Testing软件测试网+?z9B*Ed;Mj[/R51Testing软件测试网.i)h(?6xe.hB9P
(1) 函数__init__的调用51Testing软件测试网
B4ga*GjGo(Zdn
L#D
类似C++中的构造函数,但是__init__函数不是构造函数,是类实例生成好后再调用的函数。而且在有些特殊情况下不会被调用。例如:
$S?
ItL^`051Testing软件测试网 \*q x7vv:dU >>> class TestClass:51Testing软件测试网zI0jZ?9eC
i = 151Testing软件测试网(\?F5a
@oRs
def __init__(self, num = 100):
@
bi/x5M8T0 ... self.i = num51Testing软件测试网 am$k8[9o@V
...
7E$gkd&Fi#l&h5FQ0 >>> a = TestClass #这里没有调用__init__函数,i仍然为1,因为a不是实例51Testing软件测试网 |Q7U/?
N
>>> a.i51Testing软件测试网+y-d
eu)oG.Rh-a+L2]
输出 151Testing软件测试网bSA2?3?;Y
p
51Testing软件测试网8rYK;B^Gz >>> a = TestClass() #这里调用了__init__函数,i变成100
p-f7X,b@9@-D0 >>> a.i51Testing软件测试网+`}W,t$a+p#}0p
输出 100
v.NPFe$X8[wde051Testing软件测试网|p;?.g5{ 由上可见,只有在类名后面加上“()”后才会调用__init__函数。51Testing软件测试网eH6sp o
-KM9ud4W"y-E%H/cK0(2) self的使用51Testing软件测试网Y9W6Yz-m
在Python中,self不是关键词,但是确是一种强制要求的约定俗称:每个类中的成员函数的第一个参数必须为self。self跟c++中的this关键词类似,区别在于一个必须显式指定,一个是隐式包含。类中函数要使用类中的成员变量时,必须使用self来获得该类中的其他成员变量。例如:
(?
j,s9lJ
`0 >>> class TestClass:
p
e
R@SZ-`8X0 i = 1
m`|SC5o.H+d0 def __init__(self, num = 100):51Testing软件测试网/v"Oqic,R@2Lk^
... i = num #这里的i不是类的成员变量,而是__init__函数变量51Testing软件测试网A%L|}Q;]WcH
...
%Wm O_;E?3\0 >>> a = TestClass()51Testing软件测试网0vW)Br#|t
>>> a.i
)Fu(AY.ZW2i
Q7wMM#}0 输出 1 #结果类的成员变量仍然为1,没有变成num值:10051Testing软件测试网Ik%Bv3p,ELp
D#U T"}AJ-FhS0 因此,在__init__函数中只能使用self.i来使用类的成员变量i。如果类中函数不需要使用类的成员变量,则函数定义中可以省略self参数。51Testing软件测试网CS!Q8`#r"D&T0Kk
51Testing软件测试网 l-[T4y(L0[
收藏
举报
TAG:
Python
__init__