Python said unto the world upon 2005-10-08 12:40: > Traceback (most recent call last): > File "C:/Python24/foofoofoo.py", line 26, in -toplevel- > s2 = Sub2() > File "C:/Python24/foofoofoo.py", line 22, in __init__ > super(Sub2, self).__init__() > File "C:/Python24/foofoofoo.py", line 10, in __init__ > if type(self) == __TwoUnderBase: # What to write here > NameError: global name '_TwoUnderBase__TwoUnderBase' is not defined > > Within a class, __ prefixes mangle the name to include the class name as > part of the name. However, it appears that within a class statement, > the __ prefix is not mangled. This is good for you because otherwise > the inheritance would not work. However, it appears to make it > impossible to directly reference the class name from within the class. > You may want to rethink the idea of using __ prefixes in the class name. > Normally __ is used to "privatize" attributes within a class.
Hi all, I did give up the use of __ names in the case at hand. But I just posted a question about how to reference a __ class name from with the class on comp.lang.python. I used the code up-thread here. The F-bot suggested: class __TwoUnderBase(object): def __init__(self): if self.__class__.__name__ == "__TwoUnderBase": print "From __TwoUnderBase" else: print "From subclass", which does the trick. Thought I'd post it here in case of future googling. Best to all, Brian _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor