python-fire 链式调用,可以一个命令行运行多个命令(也就是连续调用多个方法),
calculator.py 代码
-
- import fire
-
- class Calculator:
-
- def __init__(self):
- self.result = 0
- self.express = '0'
-
- def __str__(self):
- print('完成')
- return f'{self.express} = {self.result}'
- # return ''
-
- def add(self, x):
- self.result += x
- self.express = f'{self.express}+{x}'
- return self
-
- def sub(self, x):
- self.result -= x
- self.express = f'{self.express}-{x}'
- return self
-
- def mul(self, x):
- self.result *= x
- self.express = f'({self.express})*{x}'
- return self
-
- def div(self, x):
- self.result /= x
- self.express = f'({self.express})/{x}'
- return self
-
- if __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_ ,这样就可以自动结束命令行,也能自动获取结果.