Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > getting the class name of a subclass

Reply
Thread Tools

getting the class name of a subclass

 
 
flupke
Guest
Posts: n/a
 
      07-20-2005
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
 
Reply With Quote
 
 
 
 
George Sakkis
Guest
Posts: n/a
 
      07-20-2005
"flupke" <(E-Mail Removed)> 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


 
Reply With Quote
 
 
 
 
flupke
Guest
Posts: n/a
 
      07-20-2005
George Sakkis wrote:
<snip>

> 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
 
Reply With Quote
 
Dan Sommers
Guest
Posts: n/a
 
      07-20-2005
On Wed, 20 Jul 2005 14:06:57 GMT,
flupke <(E-Mail Removed)> wrote:

> 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

--
Dan Sommers
<http://www.tombstonezero.net/dan/>
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Subclass of subclass Fab C++ 0 08-09-2012 09:54 AM
subclass a class in the namespace of the that subclass Trans Ruby 8 10-23-2008 07:24 AM
String subclass method returns subclass - bug or feature? S.Volkov Ruby 2 03-12-2006 06:46 PM
subclass has a variable that is subclass of same superclass jstorta Java 3 02-20-2006 08:42 PM
Introspection Question: Determining subclass name in base class Stephen Nesbitt Python 0 11-22-2004 11:00 PM



Advertisments