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)
  • 相关阅读:
    CentOS7 安装 Mysql5.6.40
    CentOS7 安装 Python3.6.5
    CentOS7 添加新用户并授权 root 权限
    02 常用数据结构
    01 常见算法
    初识 Docker
    glob & fnmatch -- 使用Unix style通配符
    Pillow6 起步
    leetcode70. 爬楼梯 🌟
    leetcode69. x 的平方根 🌟
  • 原文地址:https://www.cnblogs.com/wangdianchao/p/11854626.html
Copyright © 2011-2022 走看看