【发布时间】:2014-06-21 11:36:26
【问题描述】:
我正在自动化由多个独立应用程序组成的环境。在某些时候,我决定将每个应用程序定义为一个类并将其保存为单独的文件是最有意义的。
我目前拥有的:
包含*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 可以执行的所有操作,例如启动\登录到应用程序、执行操作、从应用程序注销等。
然后,在一个单独的文件中,我创建应用程序对象并一一调用对象的方法以创建多步骤场景。
我想要达到的目标
一切正常,但仍有改进的地方。许多类方法或多或少是相似的(例如像 login\logout to\from 应用程序这样的方法),并且显然可以在我可以继承的某种基类中定义。但是,由于我在单独的文件中定义了所有应用程序(目前这似乎是合乎逻辑的解决方案),我不知道在哪里定义这样的基类以及如何从它继承。我想到了 2 个选项,但我不确定哪一个(如果有的话)是正确的方法。
- 在单独的文件中定义一个基类,然后将其导入到每个应用程序类中。不确定这是否有意义。
- 创建一个包含所有应用程序类的非常长的文件,并将基类包含在同一文件中。 注意:因为每个应用程序都有自己的方法,并且其中一些本身是相当大的文件,所以这样的文件将非常庞大且难以维护。
那么这些是我唯一的选择吗?如果是,其中哪一个更有意义?
【问题讨论】:
-
为什么选项 1 没有意义?这是一个不错的选择。
-
@MartijnPieters 感谢您的意见。我只是不确定这是否被认为是一个好方法。我的意思是从单独的文件中导入类。实际上我已经尝试过了,但可能犯了一些错误并且无法正常工作。但我想实际的实现是一个单独的问题。再次感谢。
-
大多数 Python 标准库如果不这样工作就无法实现。 :-)
-
@MartijnPieters 所以我想它回答了我的问题 :) 如果你想把它作为答案发布,我很乐意接受。
标签: python class inheritance module code-organization