getting the class name of a subclass

F

flupke

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
 
G

George Sakkis

flupke said:
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
 
F

flupke

George Sakkis wrote:
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

George,

it works like a charm.

Thanks!
Benedict
 
D

Dan Sommers

file class_name.py
========================
class A(object):
def __init__(self):
print "I'm A"
def printclass(self):
print "Name ",__name__
print "Class ",A.__name__

Why "A.__name__" and not "self.__class__.__name__"?

Regards,
Dan
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,756
Messages
2,569,535
Members
45,008
Latest member
obedient dusk

Latest Threads

Top