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)
原文地址:https://www.cnblogs.com/wangdianchao/p/11854626.html