如何在Python的uuu init\uuu()部分中定义子进程?

2024-04-18 22:44:00 发布

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

考虑以下类别:

import subprocess

class Fruits():
    def __init__(self):
        self.TERMINAL_WIDTH = 80

    def start(self):
        p = subprocess.Popen(["mplayer", "other", "args"])
        print "Subprocess started..."

这个代码有效。你知道吗

为了更好地了解最佳编码实践,我将使用pep8 linter for Python。衣帽匠抱怨那条线

p = subprocess.Popen(["mplayer", "other", "args"])

:linter说,因为我们要定义一个变量(p),所以它应该改为使用__init__()方法。你知道吗

不过,我想知道怎么做。如果我以当前形式将该行传输到__init__(),那么当Fruits()被实例化时,子进程将开始运行,这不是我想要的。你能帮我吗?你知道吗


Tags: importselfinitlinterdefargswidth类别
1条回答
网友
1楼 · 发布于 2024-04-18 22:44:00

首先,您要创建一个局部变量。方法是可以的,但是当方法的执行完成时它就丢失了。你知道吗

您很可能想要一个实例变量。然后线条必须如下所示:

self.p = subprocess.Popen(["mplayer", "other", "args"])

但是p也是一个糟糕的名称选择,您应该使用更长的名称,例如mplayer_proc。你知道吗

__init__中有初始化所有实例变量的约定,这不是必需的,但在使用IDE时非常有用。你不需要给它一个终值。如果初始化时没有要存储的内容,只需将其设置为None

class Fruits():
    def __init__(self):
        self.TERMINAL_WIDTH = 80
        self.mplayer_proc = None

相关问题 更多 >