首页 > 编程语言 > 详细

python一个注意的地方

时间:2016-10-21 08:00:20      阅读:210      评论:0      收藏:0      [点我收藏+]
https://www.zhihu.com/question/25874136

class test: l=[] def init(self): self.l=[‘1‘,‘2‘,‘7‘] a1=test() a1.init()

如果我这样定义一个类的话,执行了init方法后,a1.l的值为[‘1‘,‘2‘,‘7‘],test.l的值为[]。
但是如果改成这样子:
class test:
    l=[]
    def init(self):
        self.l.append(1)
        self.l.append(2)
        self.l.append(7)

a1=test()
a1.init()
那么test.l的值就会变成[1,2,7]。


两者的区别是,self.l = blablabla 这是一个赋值语句,self.l.append(blablabla)这不是一个赋值语句。

当Python intepreter看到你使用了『self.l』这个变量名的时候,它并不知道你想做的是对scope中可见的某个变量进行修改,还是在本scope中创建一个新的变量。处理起来逻辑就很简单:只要你使用了赋值,就默认你是想创建一个新的变量。

python一个注意的地方

原文:http://www.cnblogs.com/kex1n/p/5983206.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!