我有兴趣将实例方法称为类方法和实例方法。这可以通过使用class_or_instance装饰器来完成,如下所示:
class class_or_instance(object):
def __init__(self, fn):
self.fn = fn
def __get__(self, obj, cls):
if obj is not None:
return lambda *args, **kwds: self.fn(obj, *args, **kwds)
else:
return lambda *args, **kwds: self.fn(cls, *args, **kwds)
class A(object):
@class_or_instance
def func1(self,*args):
# method body
现在,我可以将func1称为 A.func1(*args)或A().func1(*args)。但是,执行此操作时,func1的文档字符串会消失。解决此问题的一种方法是使用decorator.py中的decorator,但是我很难使它与类(而不是函数)一起使用。关于如何进行此操作有什么建议吗?
相关分类