python中的类变量、nonlocal关键字的使用
发布日期:2021-05-07 21:54:09 浏览次数:24 分类:精选文章

本文共 996 字,大约阅读时间需要 3 分钟。

在PyCharm中,类变量的访问和修改方式可能让人感到困惑。具体来说,类变量可以通过self或者类名进行访问。然而,这两种方式在修改类变量时有不同的行为。

当使用self关键字进行修改时,新建的对象不会继承之前修改的值。也就是说,修改的是当前对象的属性,而不是类本身的变量。例如:

class Solution:    a = 10    def fun1(self):        b = 45        def fun2():            nonlocal b            b += 20            self.a += 10  # 这里修改的是当前对象的a属性,而不是类的a变量        fun2()        return self.a

在上述代码中,self.a += 10 只会修改当前对象的a属性。如果新建一个对象,之前修改的值不会被继承。

如果使用类名(例如Solution.a)进行修改,那么新建的对象会继承之前修改后的值。例如:

class Solution:    a = 10    def fun1(self):        b = 45        def fun2():            nonlocal b            b += 20            Solution.a += 10  # 这里修改的是类的a变量        fun2()        return Solution.a

在上述代码中,Solution.a += 10 会修改类的a变量,新建的对象会继承之前修改后的值。

关于nonlocal关键字,它用于在函数嵌套中访问外部变量。例如:

class Solution:    a = 10    def fun1(self):        b = 45        def fun2():            nonlocal b            b += 20            self.a += 10  # 这里修改的是当前对象的a属性        fun2()        return self.a

在上述代码中,nonlocal b 会让fun2函数能够修改fun1函数的b变量,而self.a += 10 会修改当前对象的a属性。

上一篇:506 相对名次(字典)
下一篇:404 左叶子之和(递归标记)

发表评论

最新留言

很好
[***.229.124.182]2025年04月16日 20时35分07秒