Python;类实例

标签 python class

假设我有一个类,用 3 个类变量 var1,var2,var3,__init__ 方法调用它,它赋值将参数传递给类变量:

class class1(object):
    var1 = 0
    var2 = 0
    var3 = 0

    def __init__(self,a,b,c):
       class1.var1 = a
       class1.var2 = b
       class1.var3 = c

现在我要创建同一个类的两个实例:

obj1 = class1(1,2,3)
obj2 = class1(4,5,6)

现在,让我们看一下变量值:

print (obj1.var1, obj1.var2,obj1.var3)
4 5 6
print (obj2.var1, obj2.var2,obj2.var3)
4 5 6

obj1 不应该有值 1,2,3 吗?为什么第二个实例的 __init__ 方法改变了第一个实例(obj1)的值?以及如何使一个类的两个独立的独立实例?

最佳答案

在类定义中声明但不在方法内的变量将是类变量。换句话说,它们对整个类(class)都是一样的。

要解决这个问题,您可以在 __init__ 方法中声明它们,使它们成为实例变量:

class class1():
    def __init__(self,a,b,c):
        self.var1 = a
        self.var2 = b
        self.var3 = c

关于Python;类实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22511090/

相关文章:

python - 回文无法通过所有测试用例

class - 如何在 Swift 中创建类数组

c++ - 从基类扩展功能的派生类的最佳设计

java - 我的一个类(class)不会输出任何内容

c++在不知道扩展类的情况下调用存储在基类变量中的扩展类的构造函数

java - 多类型自定义数组列表

Python,如何将 x;y 点列表定义的样条转换为 NURB 曲线

python - 无法返回我想要的列表

java - 从 Python 运行 Java jar 文件的最快方法?

python - 在 FastAPI 中覆盖 jsonable_encoder 的默认编码器