任何人都可以帮助我使用正确的语法从父类调用我的方法__get_except_lines(...)
吗?
我有一个类,其方法如下所示。这个特殊的方法有两个下划线,因为我不希望“用户”使用它。
NewPdb(object)
myvar = ...
...
def __init__(self):
...
def __get_except_lines(self,...):
...
在一个单独的文件中,我有另一个继承自这个类的类。
from new_pdb import NewPdb
PdbLig(NewPdb):
def __init__(self):
....
self.cont = NewPdb.myvar
self.cont2 = NewPdb.__get_except_lines(...)
我得到一个让我感到困惑的属性错误:
AttributeError: type object 'NewPdb' has no attribute '_PdbLig__get_except_lines'
答案 0 :(得分:1)
您的问题是由私有变量(http://docs.python.org/2/tutorial/classes.html#private-variables-and-class-local-references)的Python名称修改引起的。你应该写:
NewPdb._NewPdb__get_except_lines(...)
答案 1 :(得分:0)
super(<your_class_name>, self).<method_name>(args)
e.g。
super(PdbLig, self).__get_except_lines(...)
答案 2 :(得分:0)
在名称前放置双下划线的全部意义在于防止在子类中调用它。见http://docs.python.org/2/tutorial/classes.html#private-variables-and-class-local-references
如果你想这样做,那么不要用双下划线命名它(你可以使用单个下划线),或者在基类上为名称创建一个别名(因此再次违背了目的)。