今天在看flask源码的时候,看到了Config类,一直好奇它是怎么从环境变量或者类中加载属性的,
于是单独把这段代码摘录下来
class BaseConfig:
SECRET_KEY = "!@#$%^&*()_+"
DATABASE_URI = "mysql://root:123546@localhost/system"
class Config(dict):
def __init__(self, defaults=None):
dict.__init__(self, defaults or {})
def from_object(self, obj):
"""
从对象中加载属性
:param obj: 对象
:return:
"""
for key in dir(obj):
if key.isupper():
self[key] = getattr(obj, key)
return self
c = Config()
print(c.from_object(BaseConfig))
dir()函数返回对象的属性列表从中选择所有键是大写的属性