2014-01-21 2 views
0

У меня есть класс Conf:AttributeError при вызове метода

class Conf(object): 
    def __init__(self): 
    pass 
    def __setattr__(self,name,value): 
    current_container().__set_conf(name,value) 

current_container() возвращает экземпляр класса интерфейса:

class interface(Container): 
    def __init__(self,name): 
    pass 
    def __set_conf(self,name,value): 
    ... 
    super(interface,self).__set_conf(name,value) 

после вызова conf.ip=... исключение возникшие:

AttributeError: 'interface' object has no attribute '_Conf__set_conf' 

Кажется, что python добавляет префикс «_Conf» к имени метода. Как этого избежать?

ответ

2

Вы являетесь жертвой name mangling, разработанной в основном для предотвращения несчастных случаев. Если вы хотите указать, что метод _set_conf должен быть закрытым, то только одно подчеркивание будет достаточно коммуникативным.

Private Variables and Class-local References содержит дополнительную информацию об утилите этой функции.

Смежные вопросы