python面向对象编程中,self作用类似于c++的this,即指向当前的对象。
1 class TempRes(object): 2 RetDc = 1 3 ErrDc = 0 4 def __init__(self): 5 print TempRes.RetDc 6 print self.RetDc 7 pass 8 def setRet(self,value): 9 self.RetDc=value 10 obj1=TempRes()
此时输出结果是一样的,都是1
1 class TempRes(object): 2 RetDc = 1 3 ErrDc = 0 4 def __init__(self): 5 print TempRes 6 print self 7 pass 8 def setRet(self,value): 9 self.RetDc=value 10 obj1=TempRes()
此时输出对象:
C:UsersNemoDesktop>python test.py
<class '__main__.TempRes'>
<__main__.TempRes object at 0x024DCD30>
可以看出 一个是类 一个是对象。
改变成员变量的值时:
1 class TempRes(object): 2 RetDc1 = 1 3 RetDc2 = 1 4 def __init__(self): 5 pass 6 def setRet(self,value): 7 self.RetDc1=value 8 TempRes.RetDc2=value 9 obj1=TempRes() 10 obj2=TempRes() 11 12 obj1.setRet(333) 13 14 print obj1.RetDc1 15 print obj2.RetDc1 16 17 print obj1.RetDc2 18 print obj2.RetDc2
运行结果:
333
1
333
333
因此可以看出,类内对self成员变量的改变,只对当前对象有效。
而对类变量例如8行的 TempRes.RetDc2=value ,改变则影响到跨对象有效。有点类似于tcl语言的common变量的定义。