Is there a function in the Python standard library to reproduce Python's name mangling scheme with a "private" attribute name? It seems like there would be, but I can't find it for the life of me.
I wrote this, but if there's a better way I'm all ears.
def mangle_name (cls, attrname) :
prefix = '_' + cls.__name__.lstrip('_')
if not attrname.startswith('__') :
attrname = '__' + attrname
if not attrname.endswith('__') :
return prefix + attrname
else :
return attrname
class Foo :
__some_such = 3
name = mangle_name(Foo, '__some_such')
print name
print hasattr(Foo(), name)