我有以下课程:
class Foo:
CONSTANT = 1
def some_fn(self):
a = Foo.CONSTANT
# do something
如何在不引用Foo.CONSTANT
的情况下引用Foo
,或以通用方式引用Foo
? (我不想在重命名类时更改对它的所有引用)
答案 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
始终引用类中定义的值。你甚至可以分配给它。