Get the class name

Jeff McNeil jeff at jmcneil.net
Mon Jun 8 16:18:02 EDT 2009


On Jun 8, 11:33 am, Gary Herron <gher... at islandtraining.com> wrote:
> Kless wrote:
> > Is there any way of to get the class name to avoid to have that write
> > it?
>
> > ---------------
> > class Foo:
> >    super(Foo, self)
> > ---------------
>
> > * Using Py 2.6.2
>
> The question does not make sense:
>     "to have WHAT write WHAT",
> and the code is wrong:
>     the call to super fails
> But even so, perhaps this will answer your question
>
>  >>> class Foo:
> ...   pass
> ...
>
>  >>> print Foo.__name__
> Foo
>
>  >>> c = Foo
>  >>> print c.__name__
> Foo
>
>  >>> ob = Foo()
>  >>> print ob.__class__.__name__
> Foo
>
> Gary Herron


I think the OP wants to call super without having to explicitly name
the type. If you use the self.__class__ approach in that scenario, you
can enter into a recursion loop with further inheritance.

 class T(object):
    """I'm a standard class"""
    def f(self):
        print "function"

class S(T):
    """I call super using self.__class__"""
    def f(self):
        super(self.__class__, self).f()

class J(S):
    """I don't know about S' odd call."""

j = J()
j.f() # <--- Bombs



More information about the Python-list mailing list