类的组合

学校与课程没有共同点,课程与老师没有共同点,但是学校与课程有关联,课程与老师有关联;学校、课程、老师是三个完全不同的类;课程是属于学校的,老师是教课程的,此时我们就用到类的组合来关联,学校-课程,课程-老师;

class School:
"""
学校类
"""
def __init__(self,name,address):
self.name = name
self.address = address
class Course:
"""
课程类
"""
def __init__(self,name,price,period,school):
self.name = name
self.price = price
self.period = period
self.school = school
class Teacher:
"""
老师类
"""
def __init__(self,name,gender,age,course):
self.name = name
self.gender = gender
self.age = age
self.course = course
#学校实例化
x1 = School("oldboy","北京校区")
x2 = School("oldboy","天津校区")
x3 = School("oldboy","南京校区")
#课程实例化
k1 = Course("python",19880,"6个月",x1) #课程与学校关联
k2 = Course("linux",17880,"4个月",x2)
k3 = Course("go",20000,"8个月",x3)
#教师实例化
j1 = Teacher("alex","male",34,k2) #教师与课程关联
j2 = Teacher("武sir","male",30,k1)
j3 = Teacher("林海峰","male",35,k3)
print(k1.__dict__)
print(k1.school.name)
print(j1.__dict__)
print(j1.course.name)
class School:
"""
学校类
"""
def __init__(self,name,address):
self.name = name
self.address = address
class Course:
"""
课程类
"""
def __init__(self,name,price,period,school):
self.name = name
self.price = price
self.period = period
self.school = school
class Teacher:
"""
老师类
"""
def __init__(self,name,gender,age,course):
self.name = name
self.gender = gender
self.age = age
self.course = course
#学校实例化
x1 = School("oldboy","北京校区")
x2 = School("oldboy","天津校区")
x3 = School("oldboy","南京校区")
#课程实例化
k1 = Course("python",19880,"6个月",x1) #课程与学校关联
k2 = Course("linux",17880,"4个月",x2)
k3 = Course("go",20000,"8个月",x3)
#教师实例化
j1 = Teacher("alex","male",34,k2) #教师与课程关联
j2 = Teacher("武sir","male",30,k1)
j3 = Teacher("林海峰","male",35,k3)
print(k1.__dict__)
print(k1.school.name)
print(j1.__dict__)
print(j1.course.name) msg = """
1 oldboy 北京校区
2 oldboy 天津校区
3 oldboy 南京校区
"""
res = """
1 python
2 linux
3 go
"""
while True:
print(msg)
menu = {
"":x1,
"":x2,
"":x3,
}
choice = input("选择学校>>>:")
school_boj = menu[choice]
name = input("课程名称>>>:")
price = input("课程价钱>>>:")
period = input("课程周期>>>:")
new_course = Course(name,price,period,school_boj)
print("课程【%s】属于【%s】学校"%(new_course.name,new_course.school.name))
print(res)
inner = {
"":k1,
"":k2,
"":k3, }
choice1 = input("选择课程>>>:")
course_boj = inner[choice1]
name = input("老师名称>>>:")
gender = input("老师性别>>>:")
age = input("老师年龄>>>:")
new_teacher = Teacher(name,gender,age,course_boj)
print("老师【%s】教的是【%s】"%(new_teacher.name,new_teacher.course.name))

选课系统

python之类的组合的更多相关文章

  1. 7 python 类的组合

    1.组合与重用性 软件重用的重要方式除了继承之外还有另外一种方式,即:组合 组合指的是,在一个类中以另外一个类的对象作为 1.一个类的属性可以是一个类对象,通常情况下在一个类里面很少定义一个对象就是它 ...

  2. python编写排列组合,密码生产功能

    python编写排列组合 python在编写排列组合是会用到  itertools 模块 排列 import itertools mylist = list(itertools.permutation ...

  3. python 参数的组合

    现在我们知道python定义函数的参数类型有:必选参数 默认参数 可变参数 关键字参数 但是在我们日常中我们是可以组合使用这些参数的:但是使用的时候,参数定义是有顺序的 定义的顺序必须是:必选参数,默 ...

  4. python面向对象编程之组合

    前面讲了面向类与对象的继承,知道了继承是一种什么"是"什么的关系. 然而类与类之间还有另一种关系,这就是组合 先来看两个例子: 先定义两个类,一个老师类,老师类有名字,年龄,出生的 ...

  5. 【Python】排列组合itertools & 集合set

    ■itertools 利用python的itertools可以轻松地进行排列组合运算 itertools的方法基本上都返回迭代器 比如 •itertools.combinations('abcd',2 ...

  6. python(Django之组合搜索、JSONP、XSS过滤 )

    一.组合搜索 二.jsonp 三.xss过滤 一.组合搜索 首先,我们在做一个门户网站的时候,前端肯定是要进行搜索的,但是如果搜索的类型比较多的话,怎么做才能一目了然的,这样就引出了组合搜索的这个案例 ...

  7. python类的组合

    类的组合,即在类实例化时,将另一个类的实例作为参数传入,这样可以将两个实例关联起来. 当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好. 例如,描述一个机器人类,这个大类是由很多 ...

  8. python 实现排列组合

    1.python语言简单.方便,其内部可以快速实现排列组合算法,下面做简单介绍. 2.一个列表数据任意组合 2.1主要是利用自带的库 #_*_ coding:utf-8 _*_ #__author__ ...

  9. python 继承与组合

    一.组合 #老师 课程 生日 class Course: def __init__(self,name,period,price): self.name = name self.period = pe ...

  10. python基础之组合继承多态

    组合 1.什么是组合 组合就是一个类的对象具备一个指向另外一个类的对象的属性 2.为何用组合 组合可以减少代码冗余 3.如何使用 class People: def __init__(self,nam ...

随机推荐

  1. Android开发人员必备的10 个开发工具

      工欲善其事,必先利其器,Android SDK 本身包含很多帮助开发人员设计.开发.测试和发布 Android 应用的工具,在本文中,我们将讨论 10 个最常用的工具. 1.Eclipse ADT ...

  2. nyoj252-01串

    01串 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 ACM的zyc在研究01串,他知道某一01串的长度,但他想知道不含有"11"子串的这种长度的0 ...

  3. [luogu3203 HNOI2010] 弹飞绵羊 (分块)

    传送门 Description 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置, ...

  4. HDU 1475 Pushing Boxes

    Pushing Boxes Time Limit: 2000ms Memory Limit: 131072KB This problem will be judged on PKU. Original ...

  5. redis-ubuntu环境下安装

    ubuntu环境下联网安装 进去系统后,首先修改root的密码 命令 sudo passwd 设置新的密码:XXX 切换为root操作 $ wget http://download.redis.io/ ...

  6. oracle 解除锁表sql

    select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b ...

  7. [asp.net]ashx中session存入,aspx为null的原因(使用flash uploader)

    I am using uploadify to upload files, they automatically post to the handler. I then modify the sess ...

  8. stylesheet_link_tag,javascript_include_tag无效?

    stylesheet_link_tag,javascript_include_tag无效? http://stackoverflow.com/questions/28241981/rails-4-ex ...

  9. UI组件之AdapterView及其子类(三)Spinner控件具体解释

    Spinner提供了从一个数据集合中高速选择一项值的办法. 默认情况下Spinner显示的是当前选择的值.点击Spinner会弹出一个包括全部可选值的dropdown菜单或者一个dialog对话框,从 ...

  10. linux下配置虚拟域名

    linux下配置虚拟域名 1.hosts文件位置! /etc/hosts 2.增加一行 127.0.0.1 xxxxx 3.修改apache中的vhosts vi /etc/httpd/extra/h ...