How do I create a constant in Python?

后端 未结 30 3156
既然无缘
既然无缘 2020-11-22 09:07

Is there a way to declare a constant in Python? In Java we can create constant values in this manner:

public static          


        
30条回答
  •  清歌不尽
    2020-11-22 09:26

    Edit: Added sample code for Python 3

    Note: this other answer looks like it provides a much more complete implementation similar to the following (with more features).

    First, make a metaclass:

    class MetaConst(type):
        def __getattr__(cls, key):
            return cls[key]
    
        def __setattr__(cls, key, value):
            raise TypeError
    

    This prevents statics properties from being changed. Then make another class that uses that metaclass:

    class Const(object):
        __metaclass__ = MetaConst
    
        def __getattr__(self, name):
            return self[name]
    
        def __setattr__(self, name, value):
            raise TypeError
    

    Or, if you're using Python 3:

    class Const(object, metaclass=MetaConst):
        def __getattr__(self, name):
            return self[name]
    
        def __setattr__(self, name, value):
            raise TypeError
    

    This should prevent instance props from being changed. To use it, inherit:

    class MyConst(Const):
        A = 1
        B = 2
    

    Now the props, accessed directly or via an instance, should be constant:

    MyConst.A
    # 1
    my_const = MyConst()
    my_const.A
    # 1
    
    MyConst.A = 'changed'
    # TypeError
    my_const.A = 'changed'
    # TypeError
    

    Here's an example of above in action. Here's another example for Python 3.

提交回复
热议问题