我可以将 Python 方法同时定义为静态方法和实例方法吗?就像是:
class C(object):
@staticmethod
def a(self, arg1):
if self:
blah
blah
这样我就可以同时调用它:
C.a(arg1)
C().a(arg1)
目的是能够运行两组逻辑。如果作为实例方法访问,它将利用实例变量并执行某些操作。如果作为静态方法访问,则无需。
import functools
class static_or_instance(object):
def __init__(self, func):
self.func = func
def __get__(self, instance, owner):
return functools.partial(self.func, instance)
class C(object):
@static_or_instance
def a(self, arg):
if self is None:
print "called without self:", arg
else:
print "called with self:", arg
C.a(42)
C().a(3)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)