在Python中如何获取类的静态方法内的类名

34 投票
2 回答
17935 浏览
提问于 2025-04-16 09:57

如何在静态方法中获取一个类的名字,我有继承关系,想要获取派生类的名字。

在下面的例子中,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

2 个回答

12

在Python中,静态方法其实就是一个普通的函数。它对类的内容一无所知,所以你不应该使用它。虽然这样做可能是可行的,但这并不是正确的做法。 :)

而在这个情况下,你显然是关心这个类的,所以你不应该使用静态方法。你应该使用类方法。

62

我很确定静态方法是无法做到这一点的。可以试试用类方法来实现:

class Snake(object):
    @classmethod
    def my_name(cls):  
        print cls.__name__

撰写回答