在Python中使用类变量时,可以通过"self"(由于引用)或"type(self)"(直接)访问和(如果它是可变的)直接操作它,而不可变的变量(例如整数)显然会在您仅使用"self"时被新实例对象所替代。
因此,在处理Python类变量时,是否最好/符合Python风格的方法是始终使用"type(self)"来处理从类方法中引用的类变量?
(我知道类变量有时会受到批评,但当我使用它们时,我希望以一种一致的方式访问它们(与不可变类型的一种方式不同,如果它们是可变的,则是另一种方式。)
编辑:是的,如果修改不可变对象的值,您将得到一个新对象作为结果。修改可变对象的值的副作用导致了这个问题 - "self"将为您提供一个引用,您可以使用它来更改类变量而不会遮蔽它,但如果您将一个新对象分配给它,它将遮蔽它。使用classname.classvar或type(self)。classvar或self.__class__确保您始终在处理类变量,而不仅仅是遮蔽它(尽管子类会使这变得复杂,如下面所述)。
因此,在处理Python类变量时,是否最好/符合Python风格的方法是始终使用"type(self)"来处理从类方法中引用的类变量?
(我知道类变量有时会受到批评,但当我使用它们时,我希望以一种一致的方式访问它们(与不可变类型的一种方式不同,如果它们是可变的,则是另一种方式。)
编辑:是的,如果修改不可变对象的值,您将得到一个新对象作为结果。修改可变对象的值的副作用导致了这个问题 - "self"将为您提供一个引用,您可以使用它来更改类变量而不会遮蔽它,但如果您将一个新对象分配给它,它将遮蔽它。使用classname.classvar或type(self)。classvar或self.__class__确保您始终在处理类变量,而不仅仅是遮蔽它(尽管子类会使这变得复杂,如下面所述)。