类内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



<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

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/251733

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月14日 上午5:30
下一篇 2023年2月14日 上午5:31

相关推荐