类内self与类名调用的区别

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:\Users\Nemo\Desktop>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变量的定义。

 

转载于:https://www.cnblogs.com/nemolmt/p/6646764.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值