python中的类常量


Answers

您可以通过self.SIZES (在实例方法中)或cls.SIZES (在类方法中)来获取SIZES

无论如何,你必须明确在哪里可以找到SIZES 。 另一种方法是将SIZES放入包含类的模块中,但是您需要在单个模块中定义所有类。

Question

在python中,我想要一个类有一些“常量”(实际上是变量),这在所有子类中都是常见的。 有没有办法用友好的语法来做到这一点? 现在我使用:

class Animal:
    SIZES=["Huge","Big","Medium","Small"]

class Horse(Animal):
    def printSize(self):
        print(Animal.SIZES[1])

我想知道是否有更好的方法来做到这一点,或者做到这一点,而不必写“动物”。 大小之前。 谢谢! 编辑:忘了提及那匹马从动物继承。




扩展betabandido的答案,您可以编写一个函数,将属性作为常量注入模块中:

def module_register_class_constants(klass, attr_prefix):
    globals().update(
        (name, getattr(klass, name)) for name in dir(klass) if name.startswith(attr_prefix)
    )

class Animal(object):
    SIZE_HUGE = "Huge"
    SIZE_BIG = "Big"

module_register_class_constants(Animal, "SIZE_")

class Horse(Animal):
    def printSize(self):
        print SIZE_BIG





Related



Tags

python python