代码之家  ›  专栏  ›  技术社区  ›  Alex B

如何在不引用函数类的情况下引用函数中的类变量?

  •  1
  • Alex B  · 技术社区  · 14 年前

    我有以下课程:

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

    我该怎么说呢 Foo.CONSTANT 不提及 Foo ,或指 以一般的方式?(重命名类时,我不想更改对它的所有引用)

    3 回复  |  直到 14 年前
        1
  •  4
  •   Alex Martelli    14 年前

    在类的方法中 Foo 或其任何子类, self.CONSTANT 将引用在类中为该类属性定义的值 (除非它在子类或实例本身中被重写——如果 分配 self.CONSTANT=23 这是 实例 使用该值创建的属性,它重写 属性)。

        2
  •  1
  •   twneale    14 年前

    有没有什么理由说明自我恒定不适合你的需要?

    class Foo:
        CONSTANT = 1
    
        def some_fn(self):
            a = self.CONSTANT
            # do something
    
        3
  •  1
  •   Jason Diamond    14 年前

    在你的例子中, self.CONSTANT 会有用的,但如果你分配给 自定常数 将“重写”类上定义的值。

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