从命令行py

时间:2018-08-02 14:23:40

标签: python command-line-interface

有没有一种方法可以从命令行实例化对象,并从实例化对象分别运行其方法。我想在下面实现的示例:

import sys

class Calculate(object):

    def __init__(self):
        self.xDim = sys.argv[1]
        self.yDim = sys.argv[2]

    def add(self):
        print(self.xDim + self.yDim)

    def multiply(self):
        print(self.xDim * self.yDim)

if __name__ == '__main__':
    calculate = Calculate()

    calculate.add()
    calculate.multiply()

如果我这样做,我将编写此代码的方式:pythoncalculate.py 2 2 它将运行两个方法加法和乘法,但是我希望能够创建一个实例,然后执行以下操作: Python 2的compute.py 2 然后执行calculateObject.add或calculateObject.multiply

这是php中需要单独调用方法的项目所必需的。我知道我可以将add和multiple放入不同的文件中,从内部实例化Calculate然后分别运行它们,但是这样做会做很多。如果没有更好的方法,我可以考虑一下。

1 个答案:

答案 0 :(得分:0)

这是不可能的。当您在终端,命令提示符或屏幕上运行python some_script.py时,它将作为 new 进程搜索并启动Python解释器。解释器运行完脚本后,它将终止返回退出代码。这段时间后,所有变量将从内存中清除。而且,当您再次运行python some_script.py时,就会以先验运行的先验知识开始新的过程。因此,如果您想要与以前相同的实例,为了存储变量信息,则需要修改脚本以强制python永不终止并继续等待新的指令。例如,python shell将等待命令,因为它正在侦听用户输入。然后,在您的PHP代码中,无需运行python some_script.py来创建新的python实例,您应该能够调用先前正在运行的python脚本,该脚本正在等待某种信号。我建议您使用网络套接字,因为它们受到高度支持,并且学习和使用起来并不复杂。