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)
  • 相关阅读:
    c++的输入流基础知识
    用英文加优先级来解读C的声明
    django 用imagefiled访问图片
    关于Django中的表单验证
    c#语言的一些复习
    IIS发布的网站用localhost可以访问,改成IP就无法访问的解决方案 .
    首次关于IIS配置遇到的一些问题
    常见dos操作
    vs2012中对于entity framework的使用
    几个知识点
  • 原文地址:https://www.cnblogs.com/wangdianchao/p/11854626.html
Copyright © 2011-2022 走看看