Есть ли в стандартной библиотеке Python функция для воспроизведения схемы изменения имени Python с именем «частного» атрибута? Вроде бы и есть, но убей не могу найти.
Я написал это, но если есть лучший способ, я весь слушаю.
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)