相关疑难解决方法(0)

Python的super()如何与多重继承一起工作?

我是Python面向对象编程的新手,我很难理解super()函数(新样式类),尤其是涉及多重继承时.

例如,如果你有类似的东西:

class First(object):
    def __init__(self):
        print "first"

class Second(object):
    def __init__(self):
        print "second"

class Third(First, Second):
    def __init__(self):
        super(Third, self).__init__()
        print "that's it"
Run Code Online (Sandbox Code Playgroud)

我没有得到的是:Third()该类是否会继承构造函数方法?如果是,那么将使用super()运行哪一个?为什么?

如果你想运行另一个怎么办?我知道它与Python方法解析顺序(MRO)有关.

python multiple-inheritance

825
推荐指数
14
解决办法
30万
查看次数

Super可以处理多重继承吗?

从这样的两个对象继承时

class Foo(object):
  def __init__(self,a):
    self.a=a

class Bar(object):
  def __init__(self,b):
    self.b=b
Run Code Online (Sandbox Code Playgroud)

我通常会这样做

class FooBar(Foo,Bar):
  def __init__(self,a,b):
    Foo.__init__(self,a)
    Bar.__init__(self,b)
Run Code Online (Sandbox Code Playgroud)

超级怎么知道我是否想要同时打电话?如果是这样,它将如何知道哪个参数传递到哪里.或者根本不可能在这里使用超级?

即使Foo和Bar采取相同的论点可以super处理这个?

或者我不应该首先尝试这样做吗?

python multiple-inheritance

10
推荐指数
1
解决办法
3482
查看次数

标签 统计

multiple-inheritance ×2

python ×2