【发布时间】:2018-09-23 09:40:58
【问题描述】:
在函数上使用类装饰器时,函数如何访问类中的 self._count 元素。我知道装饰器需要一个可调用对象并返回一个可调用对象。但是函数可以对类装饰器的内部元素有作用域吗?
class decorate_class:
def __init__(self, f):
self._func = f
self._count = 0
def __call__(self, *args, **kargs):
self._count += 1
return self._func(*args, **kargs)
@decorate_class
def callname(name):
print("Hello, {0}".format(name))
现在,当我使用参数调用函数时,我应该跟踪正在调用的次数。但我不明白的是,callname 函数如何访问 self._count?
callname('Abhishek') # o/p --> Hello, Abhishek
callname('Ashley') # o/p --> Hello, Ashley
callname._count # o/p --> 2 ( But how can callname access _count?)
有人可以帮我理解这个吗?特别是范围。
【问题讨论】:
-
但是我可以访问它。上面的代码是有效的。我也得到了输出 2。我想知道它的作用域如何?
-
Callname._count 返回 2
标签: python-3.x class python-decorators