zoukankan      html  css  js  c++  java
  • python_面向对象——继承

    1.继承

    class Animal:
        def __init__(self,name,age,sex):
            self.name = name
            self.age = age
            self.sex = sex
    
        def eat(self):
            print('{}正在吃东西~'.format(self.name))
    # 继承(Animal)类
    class Person(Animal):
        def talk(self):
            print('子类独有的方法!')
    # 子类可以使用父类中的方法
    p = Person('yhf',23,'')
    p.eat()

      子类也可以继承父类的属性:

    class Animal:
        a_type = '动物'
        def __init__(self,name,age,sex):
            self.name = name
            self.age = age
            self.sex = sex
    
        def eat(self):
            print('{}正在吃东西~'.format(self.name))
    # 继承(Animal)类
    class Person(Animal):
        def talk(self):
            print('独有的方法!')
    
    p = Person('yhf',23,'')
    # 子类也可以继承父类的属性
    print(p.a_type)

    2.重构父类中的方法

    class Animal:
        def __init__(self,name,age,sex):
            self.name = name
            self.age = age
            self.sex = sex
    
        def eat(self):
            print('{}正在吃东西~'.format(self.name))
    # 继承(Animal)类
    class Person(Animal):
        def talk(self):
            print('独有的方法!')
        # 重写父类的方法
        def eat(self):
            print('人在吃饭')
    # 子类和父类的方法重名,此时则执行子类中的方法,不执行父类中的方法
    p = Person('yhf',23,'')
    p.eat()

       属性的重构:

    class Animal:
        a_type = '动物'
        def __init__(self,name,age,sex):
            self.name = name
            self.age = age
            self.sex = sex
    
        def eat(self):
            print('{}正在吃东西~'.format(self.name))
    # 继承(Animal)类
    class Person(Animal):
        a_type = '高级动物'
        def talk(self):
            print('独有的方法!')
    
    p = Person('yhf',23,'')
    # 子类和父类的属性重名,此时按照子类的属性,不按父类的属性
    print(p.a_type)

      不完全重构(先执行子类的方法,在执行父类的方法)

    class Animal:
        def __init__(self,name,age,sex):
            self.name = name
            self.age = age
            self.sex = sex
    
        def eat(self):
            print('{}正在吃东西~'.format(self.name))
    # 继承(Animal)类
    class Person(Animal):
        def talk(self):
            print('独有的方法!')
        # 重写父类的方法
        def eat(self):
            Animal.eat(self)    #在子类方法中调用父类方法中的重名方法,可以实现父类和子类中的同名方法都执行
            print('人在吃饭')
    
    p = Person('yhf',23,'')
    p.eat()

      执行父类的构造方法:

    class Animal:
        def __init__(self,name,age,sex):
            self.name = name
            self.age = age
            self.sex = sex
    
        def eat(self):
            print('{}正在吃东西~'.format(self.name))
    # 继承(Animal)类
    class Person(Animal):
        # 在子类的构造函数中调用父类的构造函数,同时执行子类和父类的构造方法
        def __init__(self,name,age,sex,efv):
            Animal.__init__(self,name,age,sex)
            self.efv = efv
    
    p = Person('wdc','22','',2019)
    print(p.name,p.sex,p.age,p.efv)

       super方法:效果同上

    class Animal:
        def __init__(self,name,age,sex):
            self.name = name
            self.age = age
            self.sex = sex
    
        def eat(self):
            print('{}正在吃东西~'.format(self.name))
    # 继承(Animal)类
    class Person(Animal):
        # 在子类的构造函数中调用父类的构造函数,同时执行子类和父类的构造方法
        def __init__(self,name,age,sex,efv):
            # super方法:super(子类名,self).__init__(参数)或者super().__init__(属性)
            # super(Person,self).__init__(name,age,sex)
            super().__init__(name, age, sex)
            self.efv = efv
    
    p = Person('wdc','22','',2019)
    print(p.name,p.sex,p.age,p.efv)
  • 相关阅读:
    LeetCode 209. 长度最小的子数组(Minimum Size Subarray Sum)
    LeetCode 快乐数(Happy Number)
    Deep & Cross Network总结
    CTR预估之LR与GBDT融合
    近似最近邻算法-annoy解析
    FM与FFM深入解析
    LeetCode 222. 完全二叉树的节点个数(Count Complete Tree Nodes)
    js 时间与时间戳的转换
    table 样式美化
    c# string 和 byte[]数组之间转换
  • 原文地址:https://www.cnblogs.com/wangdianchao/p/11854626.html
Copyright © 2011-2022 走看看