Python 构造函数应该启动服务还是只初始化变量?



我正在创建一个Python类,它应该通过Python Docker SDK管理Docker服务。

我应该在我的类的构造函数中启动 Docker 容器,还是创建一个必须在之后手动调用的方法start()更好(并且在构造函数中只初始化类属性)?

对于C++来说,有一个RAII习惯用法,其中连接将在构造函数中建立,对于Java,我一直听说构造函数应该是轻量级的,不做任何计算或其他"重"的东西。

在 Python 中最好的方法是什么?

首先,我想在这里强调使用不正确的术语。构造函数和初始值设定项在 Python 中是两个不同的东西。构造函数是使用__new__方法在后台实现的,它控制类对象的创建。初始值设定项使用__init__方法,并在创建对象后控制对象的初始化。

在几乎所有情况下,构造函数都是使用基类的__new__实现隐式调用的,您很少需要重写它,但是对于初始值设定项,情况恰恰相反,因为您希望在创建对象初始化后自定义对象初始化。

现在来谈谈您的问题,这取决于您要如何控制应用程序,如果您在类的初始化器中启动容器,即在__init__内部,我认为没有任何问题。这样做的目的是,一旦创建对象,它也会启动 docker 容器。

但是,如果您想更明确地了解它并希望为startstop提供单独的实例方法,即使这也不是问题,只是现在您需要在创建对象后显式调用start方法。

最新更新