在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
2 个回答
12
在Python中,静态方法其实就是一个普通的函数。它对类的内容一无所知,所以你不应该使用它。虽然这样做可能是可行的,但这并不是正确的做法。 :)
而在这个情况下,你显然是关心这个类的,所以你不应该使用静态方法。你应该使用类方法。
62
我很确定静态方法是无法做到这一点的。可以试试用类方法来实现:
class Snake(object):
@classmethod
def my_name(cls):
print cls.__name__