python类变量共享吗_类变量在python中的所有实例之间共享? - python

在Python中,类变量如`var`和`list`在所有实例间共享。虽然`var`作为实例变量独立,但`list`在初始化时被所有实例绑定到同一引用。这意味着更改`a.list`会影响到`b.list`。了解类变量的行为对于避免意外的数据共享至关重要。
摘要由CSDN通过智能技术生成

我一周前开始使用python进行编码,这是我的错误,我很快就开始使用oops,类和对象进行编码。我以为我的C++熟练程度会有所帮助...。

class A:

var=0

list=[]

def __init__(self):

pass

令我惊讶的是,var和list都是一个全局变量,似乎在所有实例中都共享....我以为在所有实例中它都不同.....我花了半天的时间才弄清楚那....一点意义都没有,一个变量只能由一个类对象访问,但是可以在所有实例之间共享....只是好奇,它背后有原因吗??? ??

参考方案

绝对不要共享var,只要您通过instance.var或self.var访问它即可。但是,对于列表,您的语句要做的是在评估该类时,将创建一个列表实例并将其绑定到该类dict,因此所有实例将具有相同的列表。每当您设置instance.list = somethingelse resp。 self.list = somethingelse,它应该获得实例级别的值。

时间示例:

>>> class A():

... var = 0

... list = []

...

>>> a = A()

>>> b = A()

>>> a.var

0

>>> a.list

[]

>>> b.var

0

>>> b.list

[]

>>> a.var = 1

>>> b.var

0

>>> a.list.append('hello')

>>> b.list

['hello']

>>> b.list = ['newlist']

>>> a.list

['hello']

>>> b.list

['newlist']

Python 3运算符>>打印到文件 - python

我有以下Python代码编写项目的依赖文件。它可以在Python 2.x上正常工作,但是在使用Python 3进行测试时会报告错误。depend = None if not nmake: depend = open(".depend", "a") dependmak = open(".depend.mak…Python:对于长时间运行的进程,通过还是休眠? - python

我正在编写一个队列处理应用程序,该应用程序使用线程等待和响应要发送到该应用程序的队列消息。对于应用程序的主要部分,只需要保持活动状态即可。对于像这样的代码示例:而True: 通过要么而True: time.sleep(1)哪一个对系统的影响最小?除了保持python应用运行外,什么都不做的首选方式是什么? 参考方案 我可以想象time.sleep()会减少系…Python:无符号32位按位算术 - python

试图回答另一篇有关其解决方案涉及IP地址和网络掩码的文章时,我陷入了普通的按位算法。在Python中,是否存在一种标准的方式来进行按位AND,OR,XOR,NOT运算,假设输入是“32位”(可能是负数)整数或long,并且结果必须是[[ 0,2 ** 32]?换句话说,我需要一个与无符号长整数之间的C按位运算有效的Python对应物。编辑:具体问题是这样的:…>> Python中的运算符 - python

>>运算符做什么?例如,以下操作10 >> 1 = 5有什么作用? 参考方案 它是右移运算符,将所有位“右移”一次。二进制10是1010移到右边变成0101这是5Python:如何从字节中提取特定位? - python

我有一条消息,显示为14 09 00 79 3d 00 23 27。我可以通过调用message[4]从此消息中提取每个字节,例如,这将给我3d。如何从该字节中提取单个8位?例如,如何将24-27位作为单个消息?只需28位? 参考方案 要回答问题的第二部分,您可以使用按位运算来获取特定的位值# getting your message as int i = …

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值