python实例的成员变量的作用类似于成员变量,有些则类似于静态变量

2024-01-12

我是 python 新手,类的成员变量在我的 python 代码中工作得很奇怪。 有些像普通变量一样工作,但有些像静态变量一样工作!

class Chaos:
    list_value = []
    value = "default"

    def set_value(self, word):
        self.list_value.append(word)
        self.value = word 

    def show(self, num):
        print(str(num) + "====")
        print("value : " + self.value)
        for st in self.list_value:
            sys.stdout.write(st)
        print("\n=====\n")

a = Chaos()
a.show(0)
a.set_value("A")
a.show(1)
b = Chaos()
a.show(2)
b.show(3)

result

0====
value : default

=====

1====
value : A
A
=====

2====
value : A
A
=====

3====
value : default
A
=====

但最后的测试结果与我上次测试的预期不同。 “b”实例的“list_value”中不应有“A”。 它刚刚创建,之前从未添加过“A”。 我将“A”添加到“a”的实例中,而不是“b”。 但结果显示“b”中也有“A” 此外,类中的“list_value”和“value”的工作方式不同。 看起来两者具有相同的语法。为什么他们的工作方式不同?


事实上,这些是类变量。要创建实例变量,请在__init__功能:

class Chaos:
    def __init__(self):
        self.list_value = []
        self.value = "default"

原因value行为类似于实例变量是因为您使用self.value。当Python看到self.X看起来是否有房产X在你的对象中,如果没有,它会查看它的类。既然你从来没有设置过self.list_value,它正在访问在所有实例之间共享的类变量,因此任何修改都会反映在每个其他对象中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python实例的成员变量的作用类似于成员变量,有些则类似于静态变量 的相关文章

随机推荐

  • 如何在 springboot 应用程序中启用 Cassandra CqlSession Metrics

    我想启用 cassandra cqlsession 指标 当尝试注册 cqlsession 指标时 它在 springboot 应用程序中提供了 optional empty 这里使用 cassandra datastax java 驱动程
  • 在 std::function 上递归应用 std::bind 的问题

    给定一个函数f x y z 我们可以绑定x到 0 得到一个函数g y z f 0 y z 我们可以继续这样做并得到h f 0 1 2 在 C 语法中 这将是 include
  • ScheduledThreadPoolExecutor 和 corePoolSize 0?

    我想要一个ScheduledThreadPoolExecutor如果没有工作要做 它还会停止最后一个线程 如果有新任务 它还会创建线程 并使线程保持活动状态一段时间 但是一旦没有更多的工作要做 它应该再次丢弃所有线程 我天真地将其创建为ne
  • 如何使用双浮点?

    我正在努力弄清楚如何告诉 Lisp 我想使用双浮点值 假设我有 let x 1 format t A x 3 0 这使 0 33333334 如果我想使用双浮点数 我尝试了以下方法 let x 1 declare type double f
  • 无法将 Google 帐户添加到 Android 模拟器

    我有一个将我的 Android 模拟器连接到 Gmail 时出现问题 即使我可以浏览网页 我也无法添加我的 Gmail 帐户 我去Accounts and Sync add account google sign in 然后输入我的gmai
  • Service Worker 和透明缓存更新

    我正在尝试为一个简单但旧的 Django Web 应用程序安装 ServiceWorker 我开始使用这个例子Chrome 团队的通读缓存示例 https googlechrome github io samples service wor
  • 如何从 Python 控制 Windows 应用程序

    我在 Windows PC 上安装了该应用程序 我想使用 python 启动该应用程序并选择下拉选项并在该应用程序中执行一些其他活动 我能够使用以下命令启动该应用程序os system命令 但我无法继续进行 我希望我的程序能够执行以下操作
  • WCF、ASMX 基本 HTTP 绑定和 IIS

    我一直在使用 WCF 自 托管应用程序进行大量工作 最近 我被要求编写一个 Web 服务 其中调用客户端是一个名为 WGET 的基于 Linux 的程序 我想使用 WCF 而不是传统的 ASMX Web 服务 Web 服务正在返回标准 XM
  • 将大型 Pandas 数据帧分块写入 CSV 文件

    如何将大数据文件分块写入 CSV 文件 我有一组大型数据文件 1M 行 x 20 列 然而 我只对数据文件中大约 5 列感兴趣 我想通过仅使用感兴趣的列来制作这些文件的副本 从而使事情变得更容易 这样我就可以使用较小的文件进行后期处理 所以
  • 错误:(3, 0) 原因:org/apache/commons/lang3/StringUtils

    我收到以下错误 错误 3 0 原因 org apache commons lang3 StringUtils 当我尝试在我的 Android 项目中添加数据绑定时 我的依赖项包括 Top level build file where you
  • 为什么删除 @font-face 中的 woff2 可以解决 IE11 问题

    这些天我在 font face 上遇到了麻烦 我的字体未在 IE11 中显示 但在所有其他版本中显示 事实证明 删除 woff2 字体解决了我的问题 字体显示正常 我现在的问题是 为什么这可以成为解决方案 IE11 的想法是什么 删除一个简
  • 通过brew和dmg安装cuda

    尝试按照以下指南在 MAC 上安装 nvidia 工具包后 http docs nvidia com cuda cuda installation guide mac os x index html axzz4FPTBCf7X http d
  • C++ 装饰 basic_iostream 类

    我想做一些像下面的代码所示的事情 class foo private std fstream m stream public foo std fstream stream m stream stream foo write char con
  • 可见性:隐藏在 Angular 2 中

    在角度 2 中实现元素不可见的建议方法是什么 visibility hidden不显示元素但保持其空间占用 它有一个 hide 指令 但它似乎类似于display none 您可以设置visibility样式属性与样式绑定 https v2
  • 2s补码是一种存储负数的方法吗?

    我读过很多文章和答案来理解2s complement 他们给了我很多帮助 然而 我心中却没有多少疑问2s complement 1 Is 2s complement一种存储负数以便于操作的方法或者还有其他一些应用程序 2 2s comple
  • 如何缩小文本块中的字体大小以适应内容的宽度并保持字体纵横比

    事情是这样的 我有这行 XAML
  • Python 中相当基本的字符串扩展?

    例如 我正在尝试创建一个将采用 压缩 字符串的函数 a12b3c 并返回其 扩展 形式 在本例中为 aaaaaaaaaaaabbbc 每个字符应该重复与后面的数字一样多的次数 或者如果该字符后面没有数字则只重复一次 我已经能够创建一个函数
  • 如何在 iOS 11 中正确停止和删除音频处理器

    我正在使用类似于的audioTapProcessor苹果的 audioTap 示例 https developer apple com library content samplecode AudioTapProcessor Introdu
  • pandas.concat 中的列顺序

    我这样做 data1 pd DataFrame b 1 1 1 a 2 2 2 data2 pd DataFrame b 1 1 1 a 2 2 2 frames data1 data2 data pd concat frames data
  • python实例的成员变量的作用类似于成员变量,有些则类似于静态变量

    我是 python 新手 类的成员变量在我的 python 代码中工作得很奇怪 有些像普通变量一样工作 但有些像静态变量一样工作 class Chaos list value value default def set value self