写在前面:学习之作,诸多不足,共同进步。
最近工作涉及到算法的部署上线,
一个项目中,往往会有一些常量定义,比如主机ip,数据库连接,全局变量这种基础的需求。
所谓常量,就是一旦设定,基本上不再进行改动,或者很少进行改动。
常规来讲,都是字母大写,如果有分割的话,会用下划线进行分割。
比如我之前在JAVA中
class Config{
USER_NUMBER = 6
IP_ADDRESS = 192.168.122.4
}
在python中没有(我简直不敢相信我的眼睛.jpg).
查了下相关资料,需要自己定义。
很好玩,也很有意思。需要override(重写)2个函数就可以了。
下面是代码:
class Config(object):
class ConstError(TypeError):
pass
class ConstCaseError(ConstError):
pass
def __setattr__(self, name, value):
if name in self.__dict__.keys():
#存在性验证, 如果已经设置过了
raise self.ConstCaseError("Can't change a const variable: '%s'" % name)
# if not name.isupper():
# #语法规范验证, 如果不是大写
# raise self.ConstCaseError("Const variable must be combined with upper letters:'%s'" % name)
self.__dict__[name] = value
def __str__(self):
_str = '<====== Configs information ======>n'
for name, value in self.__dict__.items():
_str += ' {} t{}n'.format(name, value)
return _str
if __name__ == "__main__":
config = Config()
config.NAME="handsome"
config.LOCAL_IP="192.168.172.1"
print(config)
输出结果为
这样在项目中期地方使用的时候直接引用就行了。



