Python类从所有子模块继承

2024-05-23 14:29:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在用python为许多定制的公司工具编写包装器。在

基本上,我将用一个包含对工具的调用的类作为方法将每个工具分解成自己的py文件。 这些都将包含在一个包裹中。在

然后会有一个主类,它将从包中导入所有的类,然后从每个类继承,以便显示为一个内聚类。在

masterClass.py

pyPackage
- __ init__.py

- module1.py
--class Module1
---method tool1

- module2.py
--class Module2
---method tool2

etc

现在,我正在自动生成主类文件以从packages模块继承,但我想知道是否有更优雅的方法来实现这一点?在

ie公司

^{pr2}$

Tags: 文件工具方法pyinit公司methodclass
1条回答
网友
1楼 · 发布于 2024-05-23 14:29:45

我真的不确定您试图创建一个继承自其他所有较小类的更大的master类的原因是什么,但是首先想到的是设计可能是向后的。在

相反,您可能希望创建一个基类,您的所有命令模块都可以为该基类创建子类。您可以使用包作为智能命名空间来收集类似的功能,如“网络”或“压缩”等

class ToolBase(object):
    # common functionality here

    # class attributes

    # base constructor

    # methods: static, class, instance

    pass


class Module1(ToolBase):

    def __init__(self):
        super(Module1, self).__init__()

class Module2(ToolBase):

    def __init__(self):
        super(Module2, self).__init__()

在这个基类示例中,每个子类都可以期望ToolBase的功能存在,包括来自构造函数的任何设置,如数据库连接、套接字、资源。在

或者像这样的项目结构:

^{pr2}$

更新

作为使用基类并拥有共享“port”对象的一种方法,您可以将其设为只初始化一次的类级属性:

class ToolBase(object):
    _PORT = None

    def __init__(self):
        if self._PORT is None:
            self._PORT = "PORT"

    @property 
    def port(self):
        return self._PORT


class Foo(ToolBase):

    def go(self):
        print self.port

现在,您的类本身就很有用,并且将共享端口对象。在

相关问题 更多 >