我希望能够做到这一点:
class A(object):
@staticandinstancemethod
def B(self=None, x, y):
print self is None and "static" or "instance"
A.B(1,2)
A().B(1,2)
这似乎是一个应该有简单解决方案的问题,但我想不出也找不到。
最佳答案
这是可能的,但请不要。不过,我还是忍不住实现了它:
class staticandinstancemethod(object):
def __init__(self, f):
self.f = f
def __get__(self, obj, klass=None):
def newfunc(*args, **kw):
return self.f(obj, *args, **kw)
return newfunc
...及其用途:
>>> class A(object):
... @staticandinstancemethod
... def B(self, x, y):
... print self is None and "static" or "instance"
>>> A.B(1,2)
static
>>> A().B(1,2)
instance
邪恶!
关于python - 方法可以用作静态方法还是实例方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5812537/