super(MyObject,self).__ init __()在类MyObject __init __()函数中做了什么?

时间:2016-07-26 09:38:58

标签: python inheritance super

class MyObject1(object):
    def __init__(self):
        super(MyObject1, self).__init__()
        pass

class MyObject2(object):
    def __init__(self, arg):
        super(MyObject2, self).__init__()
        pass

我已经读过像这样的python27代码,

我知道超级'表示父类构造函数,

但我无法理解为什么这两个班级称自己为'构造函数' __init__',

似乎没有任何实际效果。

1 个答案:

答案 0 :(得分:4)

这些是Python中一些非常基本的OO方法。阅读here

superself相似:

  

super()可以避免显式引用基类   可以很好。但主要优点是多重继承,   在哪里可以发生各种有趣的事情。请参阅标准文档   超级,如果你还没有。

(来自此answer

以下是super的实例示例:

class Foo(object):
     def __init__(self, frob, frotz):
          self.frobnicate = frob
          self.frotz = frotz

class Bar(Foo):
     def __init__(self, frob, frizzle):
          super(Bar, self).__init__(frob, frizzle)
          self.frotz = 34
          self.frazzle = frizzle


bar = Bar(1,2)
print "frobnicate:", bar.frobnicate
print "frotz:", bar.frotz
print "frazzle:", bar.frazzle

您可以看到super正在调用基类(当前类继承的类),后跟访问修饰符,访问基类' .__init__()方法。它与self类似,但对于基类。

测试代码,它会更有意义。