gpt4 book ai didi

python - 方法可以用作静态方法还是实例方法?

转载 作者:太空狗 更新时间:2023-10-30 01:03:42 26 4
gpt4 key购买 nike

我希望能够做到这一点:

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com