在python中如何在其静态方法中获取类的名称

Tiw*_*ari 24 python

如何在静态方法中获取类的名称,我有继承并想要派生类的名称

在下面的例子中,在方法my_name()中代替XXX的是什么

class snake()
   @staticmethod
   def my_name():  
      print XXX.__name___

class python (snake)
   pass
class cobra (snake)
   pass

python.my_name()
# I want output to be python

cobra.my_name()   
# I want output to be cobra
Run Code Online (Sandbox Code Playgroud)

Sve*_*ach 47

我很确定这对静态方法来说是不可能的.改为使用类方法:

class Snake(object):
    @classmethod
    def my_name(cls):  
        print cls.__name__
Run Code Online (Sandbox Code Playgroud)

  • 正如伦纳特所说,这并非"不可能",但这是一个非常糟糕的主意.假装我从来没有说过以下内容,但是......你可以使用`inspect`模块和`inspect.currentframe()`来完成它,然后加载并搜索源文件以找到函数的名称然后它的类.:-) (5认同)

Len*_*bro 11

Python中的静态方法仅用于所有意图和目的.它对课程一无所知,所以你不应该这样做.这可能是可能的,大多数事情往往都是.但这是错的.:)

在这种情况下,你显然关心的类,所以你不想要一个静态方法来实现.所以使用类方法.