python的django项目中定义常量const.py的方法

在今天的实际开发中碰到需要定义常量的情形,c语言提供了const关键字来实现,但是python本身却没有提供const,要想在python代码中定义常量,需要我们自己来实现。

1、编写一个const.py的python文件——const.py(要求符合“命名全部为大写”“值一旦绑定便不可再修改”这两个条件),所用到的代码如下:

class Const(object):
    class ConstError(TypeError):
        pass

    class ConstCaseError(ConstError):
        pass

    def __setattr__(self, name, value):
        if name in self.__dict__://python3.x版本之后的样子
            raise self.ConstError("can't change const.%s" % name)
        if not name.isupper():
            raise self.ConstCaseError("const name '%s' is not all uppercase" % name)

        self.__dict__[name] = value


import sys

sys.modules[__name__] = Const()

    注意:使用sys.modules[name]可以获取一个模块对象,并可以通过该对象获取模块的属性,这儿使用了sys.modules向系统字  典注入了一个const对象从而实现了在执行import const时实际获取了一个const实例的功能

2、整个工程需要使用的常量都应该定义在一个文件中(我的是project_const.py)例如你将const.py放在了project.utils目录下,常量被定义在apps目录下的project_consts.py文件中,应该这么写:

from apps.utils import const

const.COMPANY = '0'
const.PERSON = '1'

    注意:这个导入的语句特别重要,之前就是看不懂怎么使用才出现了差错

3、在其他文件中应用到存储常量的文件夹里的内容时,采用:

from apps.project_consts import const

至此解决了这个python中没有变量的问题,码字不易,希望大家给点个赞!!!

猜你喜欢

转载自blog.csdn.net/hacker_NO_007/article/details/108209872