问题描述
假设我有一个类,调用 class1,
有3个类变量 var1,var2,var3,
__ init __
方法将传递的参数分配给类变量:
Suppose I have a class, call it class1,
with 3 class variables var1,var2,var3,
and __init__
method, which assigns passed arguments to the class variables:
class class1(object):
var1 = 0
var2 = 0
var3 = 0
def __init__(self,a,b,c):
class1.var1 = a
class1.var2 = b
class1.var3 = c
现在我要创建同一个类的两个实例:
Now I'm going to make two instances of the same class:
obj1 = class1(1,2,3)
obj2 = class1(4,5,6)
现在,让我们来看看变量值:
And now, let's take a look at variables values:
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
)?
Shouldn't obj1
have values 1,2,3 ? Why __init__
method of the second instance changes vaues in the first instance(obj1
)? And how to make two independent separate instances of a class?
推荐答案
在类定义中声明的变量,但不在内部方法,将是类变量。
Variables declared in the class definition, but not inside a method, will be class variables. In other words, they will be the same for the whole class.
要解决这个问题,你可以在 __ init __ $ c $中声明它们c>方法,因此它们变成实例变量:
To solve this you could declare them in the __init__
method, so they become instance variables:
class class1():
def __init__(self,a,b,c):
self.var1 = a
self.var2 = b
self.var3 = c
这篇关于蟒蛇;类实例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!