擅长:python、mysql、java
<p>因为您已经定义了一个<code>__get__</code>来在绑定方法上使用修饰符,所以可以传递一个标志,告诉它它是否正在方法或函数上使用。在</p>
<pre><code>class methods(object):
def __init__(self, *_methods, called_on_method=False):
self.methods = _methods
self.called_on_method
def __call__(self, func):
if self.called_on_method:
def inner(self, request, *args, **kwargs):
print request
return func(request, *args, **kwargs)
else:
def inner(request, *args, **kwargs):
print request
return func(request, *args, **kwargs)
return inner
def __get__(self, obj, type=None):
if obj is None:
return self
new_func = self.func.__get__(obj, type)
return self.__class__(new_func, called_on_method=True)
</code></pre>