相关疑难解决方法(0)

"超级"在Python中做了什么?

有什么区别:

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在只有单继承的类中使用了很多.我可以看到为什么你在多重继承中使用它,但不清楚在这种情况下使用它的优点是什么.

python oop inheritance super

522
推荐指数
7
解决办法
21万
查看次数

object的__init __()方法在python中做了什么?

在阅读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__()它实际上做了什么?有人可以帮忙吗?

python object init

21
推荐指数
1
解决办法
2万
查看次数

Python super()继承和需要的参数

考虑到:

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()调用?使用超级而不仅仅是让它工作的确切错综复杂是什么.

python inheritance

14
推荐指数
1
解决办法
4818
查看次数

标签 统计

python ×3

inheritance ×2

init ×1

object ×1

oop ×1

super ×1