在创建类时有没有方法重新计算类变量?

2024-04-19 21:19:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下几节课

from random import randint

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

class B:
    var_1 = A('a', randint(10, 20))

我希望从class Bvar_1创建的每个实例都有不同的值

例如:

B().var_1.value != B().var_1.value 

我知道如果我把var_1class variable移到instance variable,我会有不同的结果


Tags: 实例instancenamefromimportselfinitvalue
1条回答
网友
1楼 · 发布于 2024-04-19 21:19:26

必须将var_1更改为实例变量,以满足类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时,它的类变量__value就会增加1,它的值存储在实例变量var_1中。这保证了值总是不同的,与代码不同的是,代码中可能有两个实例共享相同的数字,因为值是随机生成的

相关问题 更多 >