首页 > 编程语言 > 详细

python 面对对象 类(继承, 多态)

时间:2019-10-16 12:24:20      阅读:89      评论:0      收藏:0      [点我收藏+]

继承,继承其它实例化样本的属性和方法,需要在声明里重新定义和使用

class School(object):
    def __init__(self, name, addr):
        self.name = name
        self.addr = addr
        self.student = []  # 用于进行学生类的存储
        self.teacher = []  # 用于进行老师类的存储
    def enroll(self, stu_obj):
        print(招录进来学生%s%stu_obj.name)
        self.student.append(stu_obj) # 将学生类进行添加
    def hire(self, staff_obj):
        print(招募老师%s%staff_obj.name)
        self.teacher.append(staff_obj) # 将老师类进行添加

class Schoolmember(object):  # 创建学校成员的父类 
    def __init__(self, name, age, sex): # 定义初始变量
        self.name = name  # 定义名字
        self.age = age # 定义年龄
        self.sex = sex  # 定义性别
    def teach(self):  # 定义父类属性
        pass

class Teacher(Schoolmember): # 定义老师属性,继承父类
    def __init__(self, name, age, sex, salary, course): # 变量声明
        super(Teacher, self).__init__(name, age, sex) # 变量继承
        self.salary = salary
        self.course = course
    def tell(self):
        print(‘‘‘
        ---info---%s
        name %s 
        age %s 
        sex %s 
        salary %s 
        course %s 
        ‘‘‘%(self.name, self.name, self.age, self.sex, self.salary, self.course))
    def teach(self):
        print(%s is teaching%self.name)

class Student(Schoolmember):
    def __init__(self, name, age, sex, stu_id, grade):
       super(Student, self).__init__(name, age, sex)
       self.stu_id = stu_id
       self.grade = grade

    def tell(self):
        print(‘‘‘
           ---info---%s
           name %s 
           age %s 
           sex %s 
           stu_id %s 
           grade %s 
           ‘‘‘ % (self.name, self.name, self.age, self.sex, self.stu_id, self.grade))
    def paid_tution(self, money):
        print(%s has paid tution for $%s%(self.name, money))


# 创建实例
school = School(oldboy, 沙河)

s1 = Student(aaa, 22, M, 0001, python)
s2 = Student(bbb, 23, F, 0002, linux)

t1 = Teacher(ccc, 333, W, 10000, python)
t2 = Teacher(ddd, 444, F, 20000, linux)

school.enroll(s1)
school.hire(t1)
school.teacher[0].teach()
for stu in school.student:
    stu.paid_tution(20000)

多态: 表示在父类里定义一个函数,在子类里都可以使用

class Animal(object):
    def __init__(self, name): # 初始化
        self.name = name 
    @staticmethod  # 静态变量装饰器, 这样不需要输入self变量
    def animal_talk(obj):
        obj.talk()

class dog(Animal): # 定义dog类, 继承Animal 
    def __init__(self, name):
        super(dog, self).__init__(name)

    def talk(self): # 定义函数属性
        print(wowo)


class cat(Animal):
    def __init__(self, name):
        super(cat, self).__init__(name)

    def talk(self):
        print(Meow)

c = cat(aaa) # 实例化
d = dog(bbb)
Animal.animal_talk(c) # 调用Animal里面的属性
Animal.animal_talk(d)

 

python 面对对象 类(继承, 多态)

原文:https://www.cnblogs.com/my-love-is-python/p/11684527.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!