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

3 投票
4 回答
5880 浏览
提问于 2025-04-15 20:49

这可能是个傻问题,但在不同的实例之间,清空类变量的最好方法是什么呢?

我知道我可以在构造函数里一个一个地重置每个变量;但是有没有办法一次性处理这些变量呢?

或者我是不是在做什么完全错误的事情,需要换个方法?谢谢大家的帮助……

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

这段代码不会改变除了 u 以外的任何 User 实例的 nameemail 属性。

3

如果你想在每次创建新对象的时候重置一些值,那你应该使用实例变量,而不是类变量。

如果你使用类变量,并且同时想创建多个用户对象,那么一个对象的改变会覆盖另一个对象的改变。

3

你可以像这样把参数传递给构造函数吗?

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')

在你发的代码里其实没有什么需要“重置”的。创建一个用户的时候,他们甚至还没有名字或邮箱这些属性,直到你稍后设置它们。另一种方法是直接把这些属性初始化为一些默认值,就像下面这样,但我上面发的代码更好,因为这样就不会有未初始化的用户对象。

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

撰写回答