Reputation: 1024
how to get name of a class inside static method, i have inheritance and want name of derived class
IN following example what shall be there in place of XXX in method my_name()
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
Upvotes: 34
Views: 18195
Reputation: 172199
A static method in Python is for all intents and purposes just a function. It knows nothing about the class, so you should not do it. It's probably possible, most things tend do be. But it's Wrong. :)
And in this case, you clearly do care about the class, so you don't want a static method. So use a class method.
Upvotes: 12
Reputation: 601401
I'm pretty sure that this is impossible for a static method. Use a class method instead:
class Snake(object):
@classmethod
def my_name(cls):
print cls.__name__
Upvotes: 62