zoukankan      html  css  js  c++  java
  • 面向对象-组合

    组合为什么有什么

    继承实现代码重用

    class People:
        school="luffcity"
        def __init__(self, name, age, sex,):
            self.name = name
            self.age = age
            self.sex = sex
    
    class Teacher(People):
        schoole='Luffycity'
        def __init__(self,name,age,sex,level,salary):
            super(Teacher,self).__init__(name,age,sex)
            self.level=level
            self.salary=salary
        def teach(self):
            print("%s is teaching" % self.name)
    class Student(People):
        schoole = 'Luffycity'
        def __init__(self, name, age, sex, class_time):
            super(Student, self).__init__(name, age, sex)
            self.class_time=class_time
        def learn(self):
            print("%s is learning" % self.name)
    t1=Teacher('alex',18,'male',10,3000)
    s1=Student('zhangsan',28,'female','08:30:00')

     给老师添加其他属性,如课程信息,按如上方法,每次创建老师对象,都会传入相同参数,解决办法如下

    class People:
        school="luffcity"
        def __init__(self, name, age, sex,):
            self.name = name
            self.age = age
            self.sex = sex
    
    class Teacher(People):
        schoole='Luffycity'
        def __init__(self,name,age,sex,level,salary):
            super(Teacher,self).__init__(name,age,sex)
            self.level=level
            self.salary=salary
        def teach(self):
            print("%s is teaching" % self.name)
    
    class Student(People):
        schoole = 'Luffycity'
        def __init__(self, name, age, sex, class_time):
            #super()关键字继承
            super(Student, self).__init__(name, age, sex)
            self.class_time=class_time
        def learn(self):
            print("%s is learning" % self.name)
    #定义一个课程类
    class Course:
        def __init__(self,course_name,course_price,course_period):
            self.course_name=course_name
            self.course_price=course_price
            self.course_period=course_period
    #创建一个python课程对象
    python=Course('python',3000,'3mons')
    t1=Teacher('alex',18,'male',10,3000)
    t2=Teacher('aglo',88,'male',90,1000)
    #给t1添加课程对象
    t1.course=python
    #给t2添加课程对象
    t2.course=python
    #访问t1的课程对象
    print(t1.course.course_name)
    print(t1.course.course_price)
    print(t1.course.course_period)
    #访问t2的课程对象
    print(t2.course.course_name)
    print(t2.course.course_price)
    print(t2.course.course_period)

    在Course类中也可以添加其他方法,如添加一个查看课程信息的方法

    class Course:
        def __init__(self,course_name,course_price,course_period):
            self.course_name=course_name
            self.course_price=course_price
            self.course_period=course_period
        def course_info(self):
            print("课程名<%s>课程价格<%s>课程周期<%s>" % (self.course_name,self.course_price,self.course_period))

    访问course_info()方法

    t1=Teacher('alex',18,'male',10,3000)
    t1.course=python
    t1.course.course_info()

    即老师有课程

    学生加一个日期属性

    class Date:
        def __init__(self,year,mon,day):
            self.year=year
            self.mon=mon
            self.day=day
        def tell_info(self):
            print("%s-%s-%s" % (self.year,self.mon,self.day))
    d=Date(2010,4,20)
    student1=Student('张三',28,'female','08:30:00')
    student1.birh=d
    student1.birh.tell_info()

  • 相关阅读:
    Linux指令集
    [日记]贝鲁特煎熬第32天
    2019南京区域赛ABCHJK题解 & KMbfs(O(n^3))板子
    欧拉筛质数以及四大积性数论函数(欧拉函数、莫比乌斯函数、约数个数函数、约数和函数)
    简短的自我介绍
    BSTTreap名次树数组&指针实现板子 Ver1.0
    2019银川区域赛BDFGHIKN题解
    安装vs2010
    SPEmailEventReceiver 之导入附件EXCEL
    为incoming mail绑定事件,SPEmailEventReceiver
  • 原文地址:https://www.cnblogs.com/yaya625202/p/8870657.html
Copyright © 2011-2022 走看看