我创建了一些 Python 文件,将我的函数分开以便于工作和修复。所有文件都在一个目录中。结构可能会被分解成类似以下内容的内容:
以下是一个最小化的示例。
我曾尝试使用类似
TIA.
编辑1:我的解决方案
感谢 @falsetru 和 @Jakub M.,使用这两个答案可以得到一个工作的解决方案。
首先,我把所有东西都放在一个层次结构中。
- a.py(一个包含基本内容的 A 类)
- b.py(一个包含基本内容的 B 类)
- modA.py(从 A 和 B 派生出一个 C 类)
- modB.py(从 A 和 B 派生出一个 D 类)
- ...
- main_a.py(使用 C 类)
- main_b.py(使用 D 类)
以下是一个最小化的示例。
a.py
import logging
logger = logging.getLogger(__name__)
class A(object):
def __init__(self):
logger.debug("Instance of A")
b.py
import logging
logger = logging.getLogger(__name__)
class B(object):
def __init__(self):
logger.debug("Instance of B")
ab.py
import a
import b
import logging
logger = logging.getLogger(__name__)
class AB(a.A, b.B):
def __init__(self):
logger.debug("Instance of AB")
a.A.__init__(self)
b.B.__init__(self)
main_one.py
import sys
import ab
import logging
import logging.handlers
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
handler = logging.StreamHandler(stream=sys.stderr)
handler.setLevel(logging.DEBUG)
handler.setFormatter(logging.Formatter('%(name)s: %(message)s'))
logger.addHandler(handler)
logger.warning("The trouble starts")
ab = ab.AB()
我曾尝试使用类似
self.logger = logging.getLogger(type(self).__name__)
的方法来对每个类进行日志记录,但结果是一样的。所以你们中的某个人能指出我在阅读Python日志记录手册时哪里错了吗?TIA.
编辑1:我的解决方案
感谢 @falsetru 和 @Jakub M.,使用这两个答案可以得到一个工作的解决方案。
首先,我把所有东西都放在一个层次结构中。
main_one.py
lib/
__init__.py
ab.py
basic/
__init__.py
a.py
b.py
其次,我将 main_one.py
中的 logger = logging.getLogger(__name__)
更改为 logger = logging.getLogger()
(根记录器没有名称!)。
这样就解决了问题。
GitHub 上的代码片段非常有帮助。
失去可移植性
是什么意思。 - falsetru