在python

时间:2017-06-30 15:25:34

标签: python oop inheritance module package

我们假设在一个模块中有以下简约python类,例如: Module

module/
   __init__.py
   db.py
   document.py

db.py

import yaml

class DB(object):
    config = {}

    @classmethod
    def load_config(cls, config_path):
        cls.config = yaml.load(open(config_path, 'r').read())

和document.py

from .db import DB

class Document(object):
    db = None

    def __init__(self):
        self.db = DB()

最终用户将使用如下Module

from Module import DB, Document

DB.load_config('/path/to/config.yml')

Document.do_some_stuff()

doc1 = Document()
doc2 = Document.find(...)
doc2.update_something(...)
doc2.save()

预期Document类及其每个实例都将在内部访问具有user指定的配置的类DB。但是,由于Document执行DB类(from .db import DB)的内部导入,因此会收到一个带有默认配置的“新”DB类。

我做了很多搜索,大多数问题和答案都是关于模块范围的配置,但最终用户没有指定。

我如何实现这样的功能?我想这里存在一些架构问题,但解决它的最简单方法是什么?

0 个答案:

没有答案