清除实例之间的所有类变量

时间:2010-03-24 21:30:08

标签: python oop class pylons

这可能是一个愚蠢的问题,但是在实例之间清除类变量的最佳方法是什么?

我知道我可以在构造函数中单独重置每个变量;但有没有办法批量做到这一点?

或者我做错了什么需要采用不同的方法?谢谢你的帮助...

class User():
    def __init__(self):
        #RESET ALL CLASS VARIABLES

    def commit(self):
        #Commit variables to database

>>u = User()
>>u.name = 'Jason'
>>u.email = 'jason.mendez@yahoo.com.mx'
>>u.commit()

因此,每次调用User时,变量都是新鲜的。

感谢。

4 个答案:

答案 0 :(得分:3)

如果要在每次构造新对象时重置值,则应使用实例变量,而不是类变量。

如果您使用类变量并尝试同时创建多个用户对象,则会覆盖其他用户对象。

答案 1 :(得分:2)

你能直接将参数传递给构造函数吗?

class User(object):
    def __init__(self, name, email):
        self.name = name
        self.email = email
    def commit(self):
        pass

jason = User('jason', 'jason@email.com')
jack = User('jack', 'jack@yahoo.com')

您发布的代码中没有“重置”的内容。构建用户后,在您稍后设置之前,他们甚至没有名称或电子邮件属性。另一种方法是将它们初始化为一些默认值,如下所示,但我上面发布的代码更好,因此不会有任何未初始化的User对象。

def __init__(self):
    self.user = None
    self.email = None

答案 2 :(得分:0)

在实例上绑定属性会创建实例属性,而不是类属性。也许您正在看到上面代码中未显示的另一个问题。

答案 3 :(得分:0)

name外,此代码不会更改email的任何实例的Useru属性。