Is it possible to get the name of a subclass? For example:
class Foo:
def bar(self):
print type(self)
class SubFoo(Foo):
pass
SubFoo().bar
#!/usr/bin/python
class Foo(object):
def bar(self):
print type(self)
class SubFoo(Foo):
pass
SubFoo().bar()
Subclassing from object
gives you new-style classes (which are not so new any more - python 2.2!) Anytime you want to work with the self attribute a lot you will get a lot more for your buck if you subclass from object. Python's docs ... new style classes. Historically Python left the old-style way Foo()
for backward compatibility. But, this was a long time ago. There is not much reason anymore not to subclass from object.
SubFoo.__name__
And parents: [cls.__name__ for cls in SubFoo.__bases__]
you can use
SubFoo().__class__.__name__
which might be off-topic, since it gives you a class name :)
It works a lot better when you use new-style classes.
class Foo(object):
....