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)