zoukankan      html  css  js  c++  java
  • python一个注意的地方

    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中创建一个新的变量。处理起来逻辑就很简单:只要你使用了赋值,就默认你是想创建一个新的变量。
  • 相关阅读:
    Test
    占位2
    开坑纪念
    function 类型(函数定义)----读书总结
    css位元素 after
    算法-哈希表
    CF547D
    CF538H
    CF516D
    CF505E
  • 原文地址:https://www.cnblogs.com/kex1n/p/5983206.html
Copyright © 2011-2022 走看看