python - 从单独的文件继承 BaseClass

标签 python class inheritance module code-organization

我正在自动化一个由多个独立应用程序组成的环境。在某些时候,我决定将每个应用程序定义为一个类并将其保存为单独的文件是最有意义的。

我现在拥有的:

包含 *py 文件的目录,其中每个文件为单个应用程序定义一个类。例如,我有应用程序 App1。它保存在 App1.py 文件中,如下所示:

class App1:
    def __init__(self):
        self.link = config.App1_link
        self.retry = config.App1_retry
    def access(self):
        pass
    def logOut(self):
        pass

因此每个类定义了App1可以执行的所有操作,例如启动\登录应用程序、执行操作、从应用程序注销等。

然后,在一个单独的文件中,我创建应用程序对象并一一调用对象的方法以创建多步骤场景。

我想要实现的目标

一切都很好,但还有改进的地方。许多类方法或多或少相似(例如登录\注销应用程序的方法),并且显然可以在某种基类中定义,然后我可以从中继承。但是,由于我在单独的文件中定义了所有应用程序(目前这似乎是合乎逻辑的解决方案),所以我不知道在哪里定义这样的基类以及如何从它继承。我心里有两个选择,但我不确定哪一个(如果有的话)是正确的方法。

  1. 在单独的文件中定义一个基类,然后将其导入到每个应用程序类中。不确定这是否有意义。
  2. 创建一个包含所有应用程序类的非常长的文件,并将基类包含在同一文件中。 注意:这样的文件会非常巨大并且难以维护,因为每个应用程序都有自己的方法,并且其中一些本身就是相当大的文件。

那么这些是我唯一的选择吗?如果是的话,哪一个更有意义?

最佳答案

这正是导入的目的。在单独的模块中定义基类,然后将其导入到需要的地方。选项 1 非常有意义。

请注意 Python 的 module naming convention是使用小写名称;这样你就可以更容易地区分类和模块。我将 App1.py 重命名为 app1.py

关于python - 从单独的文件继承 BaseClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23467878/

相关文章:

C++——向上转型和向下转型

C++虚方法的虚继承

c++ - 模板基类 C++ 中的重写函数指针问题

python - 如何将命令永久存储在 Python REPL/提示符中?

c++ - 运算符必须取 'void'

python - TensorFlow:Compat 弃用警告

C++删除操作相关查询

c# - Entity Framework 通用实体继承id错误

python - 如何使用 python 对连续对中的字符串进行标记?

Python代码学院: Making a list with a string