首页 > 解决方案 > 在初始化类时提供模块作为参数是一种不好的做法(反模式)吗?

问题描述

我已经实现了一个BaseScannerinside common/base/scanner.py,它是Scannerinside stash/scanner.py、jira/scanner.py 等的子类。

现在,问题是BaseScanner需要访问 eg 中的 ORM 模型stash/db/models.py,具体取决于它的子类位置(在stashjira等):

# common package
common/base/scanner.py

# stash package
stash/scanner.py
stash/db/models.py

# jira package
jira/scanner.py
jira/db/models.py
...

在实例化它时提供一个模块作为一个类的参数是否是一种反模式,就像我在这里做的那样main.py

import stash, jira
...
if args.command == 'stash':
   import stash.db.models as models
   scanner = jira.Scanner(args, models, ...)
   scanner.run()
  

然后从内部访问不同的ORM模型BaseScanner,比如self.models.Scanself.models.Match等等?

如果它是一种反模式,那么另一种解决方案是什么?

标签: pythonpython-3.x

解决方案


推荐阅读