调用方法时的AttributeError

时间:2014-01-21 16:50:46

标签: python

我有一个课Conf:

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”。怎么避免这个?

1 个答案:

答案 0 :(得分:2)

你是name mangling的受害者,主要是为了避免事故。如果您想指定_set_conf方法应该是私有的,只有一个下划线可以充分沟通。

Private Variables and Class-local References提供了有关此功能实用程序的更多信息。