Python:使用 import 将常用函数添加到类中

标签 python python-2.7 python-import

我有一个现有的 python (python v2.7) 应用程序,它可以动态导入外部 py 文件,这些文件包含专门命名的类来处理数据。加载的外部 py 文件是根据所需数据的后处理类型选择的。

所以我有这个类集合,每个类都在自己的文件中。这些文件根据处理类型以特定方式命名,以便主程序知道要从上游请求导入什么文件。

请记住,我和其他人总是在调整这些类文件,但我们不能更改主应用程序上的代码。

我想做的是将通用函数的"template"导入到类范围中,它可以提供主程序期望的标准控件集,而无需将它们复制/粘贴到每个文件中。当我发现一个错误并在其中一个主要类 i/o 函数中进行更正时,我讨厌它,然后我不得不在三十多个其他文件中复制它。

现在,我通过谷歌搜索了解到我在此处的导入是错误的...我收到消息:

TestClassFile.py:5: SyntaxWarning: import * only allowed at module level

但这种方法是我找到的唯一导入函数的方法,以便它们进入类本身的命名空间。我在下面有一个例子......

什么方法(如果有的话)是在 Python 中执行此操作的合适方法?

例子

主要.py

import TestClassFile
print "New TestClass - Init"
oTest = TestClassFile.TestClass("foo")

print "Should run...  Function A"
oTest.funcA()

print "Should run...  Function b"
oTest.funcB()

测试类文件.py

class TestClass:

    from TestClassImport import *

    def __init__(self, str):
        print "INIT! and be ... ", str

    def funcA(self):
        print "Function A"

测试类导入.py

def funcB(self):
    print "Function B"

非常感谢!


更新

非常感谢大家的贡献。通过研究 MixIns,这些似乎是扩展类的正确 python 方式。

测试类导入.py

class ImportClass:
    def funcB(self):
        print "Function B"

测试类文件.py

from TestClassImport import ImportClass
class TestClass(ImportClass):

    def __init__(self, str):
        print "INIT! and be ... ", str

    def funcA(self):
        print "Function A"

最佳答案

听起来您应该将导入的函数放入 mixin 中,您可以从中继承。所以:

测试类导入.py

class ClassB(object):
    def funcB(self):
        print "Function B"

测试类文件.py

from TestClassImport import ClassB
from OtherClassImport import ClassX

class TestClass(ClassB, ClassX):
    ...

关于Python:使用 import 将常用函数添加到类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44730359/

相关文章:

python - Matplotlib - 将文本标签向右移动 'x' 点

python - 如何从一个 Flask View 调用另一个 View ?

python - 检查列表的内容

python - Yampy导入错误: no module named 'authenticator'

python - 导入模块时遇到问题

Python Snakefood 模块导入普遍失败

python - 退出 ipywidgets 交互/交互以在 jupyter notebook 中产生最终输出

python - 对列表中的元素子列表进行排序,将其余元素留在原地

python - 在 python 中使用 wmi 获取电池状态?

python - 为什么我的埃拉托色尼筛法处理整数比处理 boolean 值更快?