「プライベート」属性名で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)