【发布时间】:2019-05-05 11:53:22
【问题描述】:
请帮助了解如何在类中正确使用装饰器。 例如,我想在执行类之前检查变量,如果它存在使用这个变量运行类。 如何做到这一点?
我不工作的例子:
import os,sys
import requests
def checkCredentials(function):
KEY = os.environ['KEY']
if KEY:
print("exist")
return KEY
else:
print("nope")
sys.exit(0)
@checkCredentials
class StartUp(object):
def __init__(self, argument1):
self.argument1 = argument1
def printstr(self):
print(self.argument1)
if __name__ == '__main__':
start = StartUp()
我的错误:
python3.6 ./main.py
exist
Traceback (most recent call last):
File "./main.py", line 26, in <module>
start = StartUp()
TypeError: 'str' object is not callable
【问题讨论】:
-
问题是你的装饰器返回一个字符串(或
None,如果KEY不存在。装饰器需要返回一个可调用对象,通常是一个小的修改(即“装饰") 传入的那个。
标签: python python-3.x decorator python-decorators