Python 在创建类时,是否有方法重新计算类变量?

Python 在创建类时,是否有方法重新计算类变量?,python,Python,我有以下几节课 来自随机导入randint A类: 定义初始化(自身、名称、值): self.name=名称 自我价值=价值 B类: var_1=A('A',randint(10,20)) 我想从类B中创建每个实例,变量1具有不同的值 例: B().var\u 1.value!=B().var_1.value 我知道,如果我将var_1从class variable移动到instance variable中,我将有不同的变量。您必须将var_1更改为实例变量,以满足您的要求,即classB的

我有以下几节课

来自随机导入randint
A类:
定义初始化(自身、名称、值):
self.name=名称
自我价值=价值
B类:
var_1=A('A',randint(10,20))

我想从
类B
中创建每个实例,
变量1
具有不同的值

例:

B().var\u 1.value!=B().var_1.value

我知道,如果我将
var_1
class variable
移动到
instance variable
中,我将有不同的变量。

您必须将
var_1
更改为实例变量,以满足您的要求,即class
B
的不同实例在
var_1
中存储不同的值。根据定义,类变量的值在实例之间共享,这不是您想要的

以下是您的程序的修改版本:

#!/usr/bin/env python3

class A:
    def __init__(self, name, value):
        self.name = name
        self.value = value

class B:
    __value = 0
    def __init__(self):
        B.__value += 1
        self.var_1 = A('a', B.__value)

print(B().var_1.value != B().var_1.value)
它总是打印
True


每次实例化B时,它的类变量
\uu value
将递增
1
,其值存储在实例变量
var\u 1
中。这保证了值总是不同的,这与您的代码相反,因为值是随机生成的,所以有可能两个实例共享相同的数字。

“我希望从类B创建的每个实例,var_1都有不同的值。”然后使用实例变量。这就是他们的目的。“我知道,如果我把var_1从一个类变量移到另一个实例变量,我会得到不同的结果。”这就是你自己问题的答案,不是吗?@juanpa.arrivillaga,不
var_1
仍然是一个类变量,那么为什么不把它作为一个实例变量,如果这能满足你的要求呢?为什么?这就像说“我想要一辆蓝色的车,但我希望它是红色的,但仍然是蓝色的。”