Я знаю, что есть подобный вопрос, но мой сценарий как-то иначе: смотрите коды:как использовать декоратор в классе
class MyClass(object):
def __init__(self, log_location)
self.logs = logging(log_location) # create log object by the log_location, this object should be used by the decorator fucntion
def record_log(log_object):
""" this is the decorator function
"""
def deco(func):
def wrap(*args, **kwargs):
rs = func()
# use log object to record log
if rs:
log_object.record('success')
else:
log_object.record('fail')
return wrap
return deco
@record_log(self.logs)
def test(self):
rs = do_some_thing
if rs:
return True
return False
def main():
my_class = MyClass()
my_class.test()
Но, есть ошибка, как это:
@record_log(self.logs)
NameError: name 'self' is not defined
Должен ли я использовать атрибут instance self.logs в функции декоратора в таком сценарии, как это?
Большое спасибо!
тогда, он скажет мне, что name'logs' не определено. – Spybdai
то как мне передать self.logs? – Spybdai
использование '@ decorator' отсутствует – Zaaferani