python装饰器 装饰类方法

garstoon 2016-05-13 06:02:45
遇到这么一个问题,我定义了一个带参数的decorator, 我想用它来装饰类的一个方法,
但是装饰器参数报错:name 'proj_name' is not defined

global xmlfile
global proj_name
global CaseNo_or_CaseName

class APITestTemplate(CaseTemplate):
def __init__(self, prj, case):
super(Test_sdkAPI_normal, self).__init__()
CaseNo_or_CaseName = case
proj_name = prj
self.classname = self.__class__.__name__
xmlfile = self.classname + '.xml'
self.xmlop = XMLop3(xmlfile)

@deco_setup_getAPI(proj_name, CaseNo_or_CaseName, xmlfile)
def Setup(self):

tag = 'API'
tag_pre = 'pre'
self.pre_dict = self.xmlop.getElements(tag_pre)
self.api_info_list = self.xmlop.getElements(tag)
请教一下!
...全文
179 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
关山路遥 2016-05-17
  • 打赏
  • 举报
回复
__init__在使用proj_name之前要加global proj_name来确定作用域,不然__init__里的proj_name只会被认为是局部变量
屎克螂 2016-05-16
  • 打赏
  • 举报
回复
proj_name 要赋值

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧