zoukankan      html  css  js  c++  java
  • 6、子类派生出的新方法中重用父类的功能方式二

    在子类派生出的新方法中重用父类功能的方式二:只能在子类中用

    python2:super(自己的类名,对象自己)

    python3:super()

    调用super()会得到一个特殊的对象,该特殊的对象是专门用来引用父类中的属性的,完全参照mro列表

    注意:

    1、该方式与继承严格依赖于继承的mro列表

    2、访问是绑定方法,有自动传值的效果

    class OldboyPeople:
        school='Oldboy'
    
        def __init__(self, name, age, sex):
            self.name = name
            self.age = age
            self.sex = sex
    
    
    class OldboyStudent(OldboyPeople):
    
        #           stu1,'李特丹',18,'female'
        def __init__(self,name,age,sex,num=0):
            # OldboyPeople.__init__(self,name,age,sex) #OldboyPeople.__init__(stu1,李特丹',18,'female')
            super(OldboyStudent,self).__init__(name,age,sex)
    
            self.score=num
    
        def choose_course(self):
            print('%s is choosing course' %self.name)
    
    
    
    class OldboyTeacher(OldboyPeople):
    
        def __init__(self,name,age,sex,level):
            super().__init__(name,age,sex)
    
            self.level=level
    
        def score(self,stu,num):
            stu.score=num
    
    
    # stu1=OldboyStudent('李特丹',18,'female') #OldboyStudent.__init__(stu1,'李特丹',18,'female')
    # print(stu1.__dict__)
    #
    # tea1=OldboyTeacher('egon',18,'male',10) ##OldboyTeacher.__init__(tea1,'egon',18,'male',10)
    # print(tea1.__dict__)
    
    
    #例子
    class A:
        def test(self):
            print('A.test()')
            super().test()
    
    class B:
        def test(self):
            print('from B')
    
    class C(A,B):
        pass
    
    obj=C()
    print(C.mro())
    #[<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>]
    obj.test()
    '''
    A.test()
    from B
    '''
  • 相关阅读:
    HPU第二次个人训练
    2019CCPC江西省赛
    CodeForces-913C 派对柠檬水
    [Codeforces Round #737 (Div. 2)] C Moamen and XOR (T1 D1
    E-Tree Xor_2021牛客暑期多校训练营4
    Educational Codeforces Round 107 (Rated for Div. 2) E Colorings and Dominoes
    状压dp 练习
    权值线段树模板(自用)
    Planar Reflections
    Codeforces Round #688 (Div. 2) D Checkpoints
  • 原文地址:https://www.cnblogs.com/z-x-y/p/10047482.html
Copyright © 2011-2022 走看看