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__
',
似乎没有任何实际效果。
答案 0 :(得分:4)
这些是Python中一些非常基本的OO方法。阅读here。
super
和self
相似:
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
类似,但对于基类。
测试代码,它会更有意义。