如何正确传递super()中的扩充

Pro*_*eus 0 python python-2.7

我的类需要一个称为资源的扩充:

> AClass(resource="123")
Run Code Online (Sandbox Code Playgroud)

类:

 class AClass(Base):
        def __init__(self, resource):
            super(AClass, self).__init__(self)
Run Code Online (Sandbox Code Playgroud)

这将在它扩展的Base类中设置.

class BaseHTTP(object):
    def __init__(self, resource, data=None):
        self.resource = resource
Run Code Online (Sandbox Code Playgroud)

在Python 2.7中我应该做些什么来确保基类获取这些参数,这是好的......

super(Get, self).__init__(self, resource)
Run Code Online (Sandbox Code Playgroud)

unu*_*tbu 5

你不应该传递selfsuper(...).__init__,因为super(...).__init__返回绑定的方法:

 class AClass(Base):
        def __init__(self, resource):
            super(AClass, self).__init__(resource)
Run Code Online (Sandbox Code Playgroud)

另外,我不确定是什么Get.通常super,第一个参数应该是调用它的类 - 在这种情况下,AClass.


super(...).__new__相反,奖励琐事:返回静态方法,因为它__new__是一种静态方法.所以__new__,self仍然必须通过:

super(...).__new__(self, ...)
Run Code Online (Sandbox Code Playgroud)