"flupke" <[EMAIL PROTECTED]> wrote: > I have the following test code setup, trying to get the class name of a > subclass in the super class. (Reason why i want this is described below) > > file class_name_start.py > ======================== > import class_name as cn > > obj = cn.B() > obj.printclass() > ======================== > > > file class_name.py > ======================== > class A(object): > def __init__(self): > print "I'm A" > > def printclass(self): > print "Name ",__name__ > print "Class ",A.__name__ > > class B(A): > def __init__(self): > super(B,self).__init__() > print "I'm B" > ======================== > > Output: > I'm A > I'm B > Name class_name > Class A > > I would want the last line to be Class B > The reason i want this is since i have a number of dialogs all deriving > from the same super class. In the superclass i have a save function and > i thought it would be easy to get the classname and write the properties > in a filename with the classes name as the filename. > However it turns out i get the class name of the superclass for all. > All the different dialogs are in seperate files. > > Is there a way to get the name of the subclass. If not i could always > pass a param to the init function but in my real life code i already > have several params shipped to the init so i wanted to solve it slightly > more elegant. > > Regards, > Benedict
Make printclass a class method: class A(object): def __init__(self): print "I'm A" # for python 2.4 @classmethod def printclass(cls): print "Module", cls.__module__ print "Class", cls.__name__ # for 2.3 or older printclass = classmethod(printclass) Regards, George -- http://mail.python.org/mailman/listinfo/python-list