python-fire 链式调用,可以一个命令行运行多个命令(也就是连续调用多个方法),
calculator.py 代码
import fireclass Calculator:def __init__(self):self.result = 0self.express = '0'def __str__(self):print('完成')return f'{self.express} = {self.result}'# return ''def add(self, x):self.result += xself.express = f'{self.express}+{x}'return selfdef sub(self, x):self.result -= xself.express = f'{self.express}-{x}'return selfdef mul(self, x):self.result *= xself.express = f'({self.express})*{x}'return selfdef div(self, x):self.result /= xself.express = f'({self.express})/{x}'return selfif __name__ == '__main__':fire.Fire(Calculator)
命令行 python calculator.py add 5 sub 2 mul 3 div 4, 这个命令行可以实现无限次连续加减乘除,但是如果你不写 def _str_,那么代码就无法自动结束,因为一直在return self等待下一个命令.
可以加一个def get_result 方法 return self.result,那么命令行就是 python calculator.py add 5 sub 2 mul 3 div 4 get_result,这样不太优雅,本人建议写 _str_ ,这样就可以自动结束命令行,也能自动获取结果.