Calling a method from a parent class in Python
有人能帮我用正确的语法从父类调用方法
我有一个具有如下所示方法的类。这个特定的方法有2个下划线,因为我不希望"用户"使用它。
1 2 3 4 5 6 7 | NewPdb(object) myvar = ... ... def __init__(self): ... def __get_except_lines(self,...): ... |
在另一个文件中,我有另一个类继承了这个类。
1 2 3 4 5 6 7 | from new_pdb import NewPdb PdbLig(NewPdb): def __init__(self): .... self.cont = NewPdb.myvar self.cont2 = NewPdb.__get_except_lines(...) |
我得到一个属性错误,这让我很困惑:
1 | AttributeError: type object 'NewPdb' has no attribute '_PdbLig__get_except_lines' |
您的问题是由于私有变量(http://docs.python.org/2/tutorial/classes.html私有变量和类本地引用)的python名称管理造成的。你应该写:
1 | NewPdb._NewPdb__get_except_lines(...) |
将双下划线放在名称前面的整个要点是防止在子类中调用它。参见http://docs.python.org/2/tutorial/classes.html私有变量和类本地引用
如果您想这样做,那么不要用双下划线来命名它(您可以使用一个下划线),也不要为基类上的名称创建别名(这样又会破坏目的)。
1 | super(<your_class_name>, self).<method_name>(args) |
例如
1 | super(PdbLig, self).__get_except_lines(...) |