chzhiyi / -KnowledgeShare

6 stars 1 forks source link

20190409 - Python中继承和多态的介绍 - bailian #48

Open 15175036183 opened 5 years ago

15175036183 commented 5 years ago

创建一个Person父类

class Person:
    def __init__(self,name=None,age=None,sex=None): #初始化父类的属性
         self.name = name
         self.age = age
         self.sex = sex
    def __str__(self):  #父类的方法
         return "我的姓名:{0},我的年龄:{1},我的性别:{2}".format(self.name,self.age,self.sex)

子类Student继承父类Person 当子类继承父类时,子类的构造方法应该包含父类和子类共同的属性,在子类的初始化方法中,将父类的属性传递给父类,子类的属性赋值给子类。

class Student(Person):
    def __init__(self,name=None,age=None,sex=None,score=None):
        # Person.name = name  #给父类传参的四种方式:1.父类.属性
        # self.age = age      #2.self.属性
        # self.sex = sex
        # Person.__init__(self,name,age,sex)          #3.父类.__init__(self,参数)
        super(Student,self).__init__(name,age,sex)   #4.super(子类,self).__init__(参数)
        self.score = score
    def __str__(self):
        return"我的姓名:{0},我的年龄:{1},我的性别:{2},成绩:{3}".format(self.name,self.age,self.sex,self.score)

实例化子类并传递实参

stu = Student("Mary",21,'female',80)
print(stu)

定义:多态的概念依赖于继承,函数的名称一样,参数不一样

class Animal: def run1(self): raise AttributeError('子类必须实现这个方法')

class People(Animal): def run(self): print('the people is running')

class Pig(Animal): def run(self): print('pig is walking')

实例化对象

peo1 = People() pig1 = Pig()

def func(a): #a这个参数没有类型限制,可以传入不同类型的值 a.run() func(peo1) #传递参数 func(pig1)