python2 python3的super

136 阅读1分钟

python2 和python3

# python2
class MyParentClass(object):
    def __init__(self):
        pass
class SubClass(MyParentClass):
    def __init__(self):
        super(SubClass, self).__init__()        # 使用这种方法时,要求继承链的最顶层父类必须要继承 object。即MyParentClass(object)
        # super(SubClass, self).__init__(para)  # if parentclass have para

class MutilSubClass(MyParentClass, SubClass):
    def __init__(self):
        super(MutilSubClass, self).__init__()   # 第一重继承
        SubClass.__init__(self)                 # 第二重继承, 对于多重继承,如果有多个构造函数需要调用, 我们必须用传统的方法SubClass.__init__(self) 。
        
# python2 e.g        
class AbstractSecurityManager():
    pass
class BaseSecurityManager(AbstractSecurityManager):
    def __init__(self, appbuilder):
        super(BaseSecurityManager, self).__init__(appbuilder)

# python3
class MyParentClass():
    def __init__(self, x, y):
        pass

class SubClass(MyParentClass):
    def __init__(self, x, y):
        super().__init__(x, y)
        # super()   # no need init if parentclass init have no para