前言
我在开发中遇到这样的问题,我要去写一个配置文件,但是配置文件中有很多重复的内容和结构,后来我想如果我能以对象的形式去配置文件字段,会不会很棒。
那样我只需要配置一些模块,让模块之间产生引用和继承关系,这样不就解决这个问题了吗。思考了很久,其重点是怎么去让模块之间,建立引用和继承关系。
我尝试者用Python实现了它,它看起来效果还不错。
class ObjectConfiger():
"""
基于对象的配置
使用它可以建立不同dict之间的对象关系
包括对象的继承和引用
例如:
主题对象:
当示例中提到 主题对象 时,它指dict下的顶级KEY
继承:
只允许主题对象可以被继承,例如: boy student,
name和age 被视为boy的属性, 只有继承对象允许继承
继承对象,继承对象之间允许相互继承,但总是会优先保留
自己的属性,从其他继承者那里获取缺少的参数。
configer = ObjectConfiger({
'boy':{
'name': '岳云鹏',
'age' : 5,
'school': '北极光第五中学'
},
'student':{
'__extends__':['boy'],
'school': '庞各庄大学',
'score': 30
}
})
print(configer.get_selection('boy'))
# 输出 {'name': '岳云鹏', 'age': 5, 'school': '北极光第五中学'}
print(configer.get_selection('student'))
# 输出