如何在函数中引用类变量而不在Python中引用它的类?

时间:2010-05-28 02:34:19

标签: python

我有以下课程:

class Foo:
    CONSTANT = 1

    def some_fn(self):
        a = Foo.CONSTANT
        # do something

如何在不引用Foo.CONSTANT的情况下引用Foo,或以通用方式引用Foo? (我不想在重命名类时更改对它的所有引用)

3 个答案:

答案 0 :(得分:4)

在类Foo或其任何子类的方法中,self.CONSTANT将引用在类Foo中为该类属性定义的值(除非它在子类或子类中被覆盖)实例本身 - 如果您分配 self.CONSTANT=23,则它是使用该值创建的实例属性,并且它会覆盖属性在以后的参考文献中)。

答案 1 :(得分:1)

为什么self.CONSTANT不适合您的需求?

class Foo:
    CONSTANT = 1

    def some_fn(self):
        a = self.CONSTANT
        # do something

答案 2 :(得分:1)

在您的示例中,self.CONSTANT可以使用,但如果您分配给self.CONSTANT,则会“覆盖”该类定义的值。

您可以使用self.__class__.CONSTANT始终引用类中定义的值。你甚至可以分配给它。