python类中self的问题?

问题设计python内核,以下代码在python运行时内存指向问题?classtest3:count=0definit(self):test3.count+=1#!!!注... 问题设计python内核,以下代码在python运行时内存指向问题?
class test3:
count=0
def init(self):
test3.count += 1 #!!!注意此处不是self.count
#--------------------------------------------------#
cc3=test3()
cc3.init()
print(cc3.count) #返回1
cc4=test3()
cc4.init()
print(cc3.count,cc4.count) #返回2,2
cc4.count=6
cc4.init()
print(cc3.count,cc4.count) #返回3,6

我想问一问:

为什么第二次返回2,2 ?

为什么第三次返回3,6 ?
展开
 我来答
gx03abc
2019-03-24 · TA获得超过538个赞
知道小有建树答主
回答量:415
采纳率:83%
帮助的人:189万
展开全部
原因都出在第4行这句: test3.count += 1 #!!!注意此处不是self.count
你每运行一次 init() 函数 count 就会累加一
注意 你累加的是 test3.count 而不是 self.count
所以 运行了三次 init() 函数 的输出是 1 2 3
如果 你累加的是 self.count 就会输出三次 1 1 1
***首先要理解上面所说的 再继续看下面的***
既然如此 print(cc3.count,cc4.count) #返回2,2 就是正确的
cc3.count 指向的 test3().count 输出的是 2 没异议是吧
cc4.count 指向的也是 test3().count 为什么不是 2 都是同一个东西
print(cc3.count,cc4.count) #返回3,6
前面第一个3 就不用多说了
后面的第二个6 是因为你 cc4.count=6 这句指定了他是6
比如 a = 6 输出a会是什么? 当然是6啊
在八境台喝脉动的芥蓝
2019-03-22 · TA获得超过646个赞
知道小有建树答主
回答量:352
采纳率:100%
帮助的人:11万
展开全部
Python编写类的时候,每个函数参数第一个参数都是self,一开始我不管它到底是干嘛的,只知道必须要写上。后来对Python渐渐熟悉了一点,再回头看self的概念,似乎有点弄明白了。

首先明确的是self只有在类的方法中才会有,独立的函数或方法是不必带有self的。self在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。

self名称不是必须的,在python中self不是关键词,你可以定义成a或b或其它名字都可以,但是约定成俗(为了和其他编程语言统一,减少理解难度),不要搞另类,大家会不明白的。

下例中将self改为myname一样没有错误:

class Person:
def _init_(myname,name):
myname.name=name
def sayhello(myname):
print 'My name is:',myname.name
p=Person('Bill')
print p
self指的是类实例对象本身(注意:不是类本身)。

class Person:
def _init_(self,name):
self.name=name
def sayhello(self):
print 'My name is:',self.name
p=Person('Bill')
print p
在上述例子中,self指向Person的实例p。 为什么不是指向类本身呢,如下例子:

class Person:
def _init_(self,name):
self.name=name
def sayhello(self):
print 'My name is:',self.name
p1=Person('Bill')
p2 = Person('Apple')
print p1
如果self指向类本身,那么当有多个实例对象时,self指向哪一个呢?

总结

self在定义时需要定义,但是在调用时会自动传入。

self的名字并不是规定死的,但是最好还是按照约定是用self

self总是指调用时的类的实例。
追问
感谢回答。但是,你说的我都知道,我问的是为什么会有这些结果?运算过程中的内存指向。问题比较设计python语言的内核。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
坑队友的爱晴天
2019-03-22 · 超过38用户采纳过TA的回答
知道答主
回答量:131
采纳率:65%
帮助的人:25.2万
展开全部

类中函数带上self,就可以调用你在初始化的时候所使用的变量

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式