Python类:重复实例

时间:2014-05-28 14:34:33

标签: python class duplicates instances

我无法真正展示我的代码,但我可以解释这个问题。 我使用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()

2 个答案:

答案 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