在静态方法中引用自己的类

2024-10-01 04:47:41 发布

您现在位置:Python中文网/ 问答频道 /正文

在静态方法中引用它自己的类有没有简写?在

假设我有这段代码:

class SuperLongClassName(object):

    @staticmethod
    def sayHi():
        print 'Hi'

    @staticmethod
    def speak():
        SuperLongClassName.sayHi()  # Is there a shorthand?

Tags: 代码objectisdefhiclassthereprint
2条回答

是的,请使用@classmethod而不是@staticmethod@staticmethod的全部意义在于,如果不需要额外的类参数,则将其删除。在

class SuperLongClassName(object):

    @classmethod
    def sayHi(cls):
        print 'Hi'

    @classmethod
    def speak(cls):
        cls.sayHi()

你可能想要一个^{}。它的工作方式类似于staticmethod,但将类作为隐式的第一个参数。在

class Claaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaass(object):
    @classmethod
    def foo(cls):
         print cls.__name__

Claaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaass.foo() # prints Claaa...

警告:

^{pr2}$

或者,在模块级别为类定义一个较短的别名:

class Claaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaass2(object):
    @staticmethod
    def foo():
        return _cls2
_cls2 = Claaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaass2

# prints True
print (Claaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaass2 is
       Claaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaass2.foo())

相关问题 更多 >