
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
属性。
发表评论
最新留言
很好
[***.229.124.182]2025年04月16日 20时35分07秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
惊闻NBC在奥运后放弃使用Silverlight
2019-03-06
IE下尚未实现错误的原因
2019-03-06
创建自己的Docker基础镜像
2019-03-06
Python 简明教程 --- 20,Python 类中的属性与方法
2019-03-06
KNN 算法-理论篇-如何给电影进行分类
2019-03-06
Spring Cloud第九篇 | 分布式服务跟踪Sleuth
2019-03-06
CODING 敏捷实战系列课第三讲:可视化业务分析
2019-03-06
使用 CODING DevOps 全自动部署 Hexo 到 K8S 集群
2019-03-06
工作动态尽在掌握 - 使用 CODING 度量团队效能
2019-03-06
CODING DevOps 深度解析系列第二课报名倒计时!
2019-03-06
数据结构第八节(图(下))
2019-03-06
基于Mustache实现sql拼接
2019-03-06
POJ 2260 Error Correction 模拟 贪心 简单题
2019-03-06
CSUOJ Water Drinking
2019-03-06
gRPC在 ASP.NET Core 中应用学习(一)
2019-03-06
@SuppressWarnings 用法
2019-03-06
看完你就明白的锁系列之锁的状态
2019-03-06
看完这篇操作系统,和面试官扯皮就没问题了
2019-03-06
我的价值观
2019-03-06
一文详解 Java 并发模型
2019-03-06