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
更改为实例变量,以满足您的要求,即classB
的不同实例在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
仍然是一个类变量,那么为什么不把它作为一个实例变量,如果这能满足你的要求呢?为什么?这就像说“我想要一辆蓝色的车,但我希望它是红色的,但仍然是蓝色的。”