v0.1.3
修改
-
版本
0.1.0
中@Inject
的参数可以直接指代类的初始化参数,这种做法限制了版本的迭代,对后期其它参数的引入造成很大的影响。所以在以后的版本中将取消这种做法,改成通过type
参数指代。from no_config import Inject @Inject class User: def __init__(self, username, password): pass @Inject(type=dict(user=User)) class App: def __init__(self, id, user): pass if __name__ == '__main__': app = App('app-id', dict(username='username', password='password')) print(app.id) print(app.user.username) print(app.user.password)
-
Config.init
的file_path
参数设计时没有考虑到远程配置,此版本改变了一些参数细节,使其能支持更多种初始化方式,详细信息见初始化。 -
配置文件嵌套可以很清晰的区分开发与生产环境,因此在
Config.init
中增加了config_path
参数,用于指定嵌套配置文件的路径,详细信息见文件嵌套。
增加
实际开发中请求接口通常会得到一个字典,此版本引入了参数config_inject
可以直接初始化对象,这样能极大程度的减少了字典映射成类的繁琐过程。
from no_config import Inject
@Inject
class User:
def __init__(self, username, password):
pass
@Inject(type=dict(user=User))
class App:
def __init__(self, id, user):
pass
if __name__ == '__main__':
config_inject = App(config_inject=dict(
id='config-inject-app-id',
user=dict(
username='config-inject-username',
password='config-inject-password'
)
))
print(config_inject.id)
print(config_inject.user.username)
print(config_inject.user.password)
为了防止
config_inject
与类原本参数重复,可以通过@Inject(config_inject='别名')
的方式更改。配置注入别名。
BUG
no_config 0.1.2
中@Config
的type
参数的优先等级较低,从而导致了配置初始化时,没有新建类,只是直接修改了原类中的属性,这与实际情况不符。这一情况在最新版本中已经进行修改。