2024-10-01 04:47:41 发布
网友
在静态方法中引用它自己的类有没有简写?在
假设我有这段代码:
class SuperLongClassName(object): @staticmethod def sayHi(): print 'Hi' @staticmethod def speak(): SuperLongClassName.sayHi() # Is there a shorthand?
是的,请使用@classmethod而不是@staticmethod。@staticmethod的全部意义在于,如果不需要额外的类参数,则将其删除。在
@classmethod
@staticmethod
class SuperLongClassName(object): @classmethod def sayHi(cls): print 'Hi' @classmethod def speak(cls): cls.sayHi()
你可能想要一个^{}。它的工作方式类似于staticmethod,但将类作为隐式的第一个参数。在
staticmethod
class Claaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaass(object): @classmethod def foo(cls): print cls.__name__ Claaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaass.foo() # prints Claaa...
警告:
或者,在模块级别为类定义一个较短的别名:
class Claaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaass2(object): @staticmethod def foo(): return _cls2 _cls2 = Claaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaass2 # prints True print (Claaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaass2 is Claaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaass2.foo())
是的,请使用
@classmethod
而不是@staticmethod
。@staticmethod
的全部意义在于,如果不需要额外的类参数,则将其删除。在你可能想要一个^{} 。它的工作方式类似于
staticmethod
,但将类作为隐式的第一个参数。在警告:
^{pr2}$或者,在模块级别为类定义一个较短的别名:
相关问题 更多 >
编程相关推荐