有什么区别:
class Child(SomeBaseClass):
def __init__(self):
super(Child, self).__init__()
Run Code Online (Sandbox Code Playgroud)
和:
class Child(SomeBaseClass):
def __init__(self):
SomeBaseClass.__init__(self)
Run Code Online (Sandbox Code Playgroud)
我已经看到super在只有单继承的类中使用了很多.我可以看到为什么你在多重继承中使用它,但不清楚在这种情况下使用它的优点是什么.
在阅读OpenStack的代码时我遇到了这个问题.
名为"Service"的类继承基类"object",然后在Service的__init__()方法__init__中调用object .相关代码如下所示:
类定义:
class Service(object):
Run Code Online (Sandbox Code Playgroud)
和服务的init方法定义:
def __init__(self, host, binary, topic, manager, report_interval=None,
periodic_interval=None, *args, **kwargs):
Run Code Online (Sandbox Code Playgroud)
并在Service的init中调用super(这里的'object'):
super(Service, self).__init__(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
我不明白最后一次电话,object.__init__()它实际上做了什么?有人可以帮忙吗?
考虑到:
class Parent(object):
def altered(self):
print "PARENT altered()"
class Child(Parent):
def altered(self):
print "CHILD, BEFORE PARENT altered()"
super(Child, self).altered() # what are the arguments needed? Why Child and self?
print "CHILD, AFTER PARENT altered()"
Run Code Online (Sandbox Code Playgroud)
在Python 2.7中,为什么必须Child作为参数传递给super()调用?使用超级而不仅仅是让它工作的确切错综复杂是什么.