【发布时间】:2018-10-20 02:23:19
【问题描述】:
我有类似的元类:
class Metaclass(type):
def __new__(self, name, bases, attrs):
for k, v in attrs.iteritems():
if isinstance(v, types.FunctionType):
attrs[k] = self.decorator(v)
return super(MetaClass, self).__new__(self, name, bases, attrs)
@classmethod
def decorator(cls, func):
def wrapper(*args, **kwargs):
print(func.__name__)
但我无法得到 func.__class__.__name__ 它打印元类。我想得到func.__name__ 的班级名称。
显然这是不可能的python 2.7(?)
我可以将类名作为参数传递吗?对于调用此装饰器的方法?
即如果testmethod 调用元类装饰器并将Testclass 作为参数传递。因此,如果我知道func.__name__ 来自特定班级,请做特定的事情。
【问题讨论】:
-
func.__class__不是定义函数的类;是types.FunctionType,函数对象本身的类。
标签: python python-2.7 metaclass