python - python中如何调用父类的方法?

标签 python class oop inheritance

我正在用 python 编写一个类。

class my_class(object):
    def __init__(self):
    # build my objects 
    def foo(self,*args,**kwargs):
    # do something with them

然后我想扩展这个类:

class my_extended_class(my_class):

但我不知道访问父方法的正确方法是什么。

我应该:

1) 创建父对象的实例?在构造函数时

def __init__(self):
    self.my_father=my_class()
    # other child-specific statements
    return self
def foo(self,*args,**kwargs):
    self.my_father.foo(*args,**kwargs)
    # other child-specific statements
    return self

2) “直接”调用父方法?

def foo(self,*args,**kwargs):
    my_class.foo(*args,**kwargs)
    # other child-specific statements
    return self

3) 其他可能的方式?

最佳答案

使用super(ClassName, self)

class my_class(object):
    def __init__(self):
    # build my objects 
    def foo(self,*args,**kwargs):
    # do something with them

class my_extended_class(my_class):
    def foo(self,*args,**kwargs):
        super(my_extended_class, self).foo(*args,**kwargs)
        # other child-specific statements
        return self

兼容性在 How can I call super() so it's compatible in 2 and 3? 中讨论但简而言之,Python 3 支持使用或不使用 args 调用 super,而 Python 2 需要它们。

关于python - python中如何调用父类的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49569239/

相关文章:

python - python 中的字典字典!

C++ 成员变量不更新 - 菜鸟在这里

Python-__iter__方法返回instance.__str__和instance.name?

java - 为什么在这种情况下,覆盖 Setter 方法不起作用

JavaScript 对象返回 'undefined'

python - 将数据从一列回填到另一列

python - 初始化 django 模型从那一刻捕获派生属性

javascript - 在 javascript 中,我将如何做这个 rfind?

php - PHP中带有自定义ID和自定义消息的错误处理

c++ - 有没有办法在 Dyalog APL 中⎕NA 导入一个 dll 导出的 C++ 类?