我无法真正展示我的代码,但我可以解释这个问题。 我使用python 2.7,我创建了我写的一个类的2个实例。 出于某种原因,当我在一个实例中更改let的电子邮件字段时,同一字段将更改为另一个实例上的相同值。 有谁知道这样的问题或我做错了什么?如果需要更多解释请告诉我
示例:
class EX:
def __init__(self, _email = " "):
set_email(_email)
def get_email(self):
return self._email
def set_email(self, email):
self._email = email
if __name__ == '__main__':
ex1 = EX()
ex2 = EX()
ex1.set_email("user@user.com")
print ex1.get_email() #both print the same "user@user.com"
print ex2.get_email()
答案 0 :(得分:0)
您应该使用self
变量。
这是一个简化的例子:
class A:
def __init__(self, val):
self.value = val
a = A(5)
b = A(6)
a.value = 9
>>> print a.value
9
>>> print b.value
6
答案 1 :(得分:0)
您必须展示您的代码示例,可能是您如何创建和使用类和实例的简化示例。
我猜你已经定义了类属性而不是实例属性:
class A(object):
class_attr = 'eh'
def __init__():
self.instance_attr = 42
如果在一个实例中更改它们,则类属性将在其所有实例中发生变化。
更新:我已经更正了您的示例:
class EX:
def __init__(self, _email = " "):
self._email = _email
self.set_email(_email)
def get_email(self):
return self._email
def set_email(self, email):
self._email = email
if __name__ == '__main__':
ex1 = EX()
ex2 = EX()
ex1.set_email("user@user.com")
print ex1.get_email() # this prints
print ex2.get_email() # this doesn't