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