创建类?

2024-04-20 16:40:28 发布

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

我是python新手,正在尝试如何模块化我的函数。我的项目是restfulapi的单元测试框架。为了简洁起见,我简化了代码。你知道吗

类型_分析器.py你知道吗

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"

你知道吗主.py你知道吗

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

Tags: pyimportselfapiparserreturnifdef
1条回答
网友
1楼 · 发布于 2024-04-20 16:40:28

在python中,对象本身必须是方法信号的显式部分。 因此你需要写: def login(self):

self.login有点像()*写login(self)。因为login()不接受任何参数,所以会得到一个错误。你知道吗


(*)说得有点像,别写了


原料药_职能部门你知道吗

from type_parser import *

class ApiFunctions:

    @A
    def login(self):
        print "cool"
    @B
    def logout(self)
        print "not cool"

相关问题 更多 >