Tiwari
Tiwari

Reputation: 1024

In python how to get name of a class inside its static method

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

Answers (2)

Lennart Regebro
Lennart Regebro

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

Sven Marnach
Sven Marnach

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

Related Questions