我是python新手,正在尝试如何模块化我的函数。我的项目是restfulapi的单元测试框架。为了简洁起见,我简化了代码。你知道吗
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--type', help='a or b')
args = parser.parse_args()
def A(func):
def return_func():
if args.type == "b":
return func()
else:
pass
return return_func
def B(func):
def return_func():
if args.type == "a":
return func()
else:
pass
return return_func
from type_parser import *
class ApiFunctions:
@A
def login():
print "cool"
@B
def logout()
print "not cool"
from api_funcs import *
api = ApiFunctions()
def __main__():
api.login()
api.logout()
__main__()
python main.py --type=a
期望值:
cool
实际值:
TypeError: return_func() takes no arguments
如果我从类中取出api函数并直接调用它,它就可以工作了,但是我想让它更抽象,因为将有3组api
class ApiFunctions:
@A
def login(self):
print "cool"
@B
def logout(self)
print "not cool"
def A(func):
def return_func(self):
if args.type == "b":
return func(self)
else:
pass
return return_func
在python中,对象本身必须是方法信号的显式部分。 因此你需要写:
def login(self):
写
self.login
有点像()*写login(self)
。因为login()
不接受任何参数,所以会得到一个错误。你知道吗(*)说得有点像,别写了
原料药_职能部门你知道吗
相关问题 更多 >
编程相关推荐