python类的组合
类的组合,即在类实例化时,将另一个类的实例作为参数传入,这样可以将两个实例关联起来。
当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好。
例如,描述一个机器人类,这个大类是由很多互不相关的小类组成,如机械胳膊类、腿类、电池类等。
当类之间有很多相同的属性,提取这些统统的属性做成基类,用继承比较好。
class course: def __init__(self,name,price,period,teacher): self.name=name self.price=price self.period=period self.teacher=teacher class teacher: def __init__(self,name,sex): self.name=name self.sex=sex class student: def __init__(self,name,age,course): self.name=name self.age=age self.course=course t1=teacher('Bob',38) t2=teacher('Jack',45) t3=teacher('Jane',45) c1=course('python',6000,'3 months',t2)#将teacher作为参数传递给课程实例 c2=course('linux',7000,'5 months',t1) c3=course('mysql',6500,'5 months',t3) d={':c3} name='Alice' age=21 while True: choice=input('please choice course:') if choice in d.keys(): s1=student(name,age,d[choice])#将课程实例作为参数传递给学生实例 print(s1.__dict__) print('%s choose course %s,%s is the teacher'%(s1.name,s1.course.name,s1.course.teacher.name)) elif int(choice)==0: exit(0) else: print('please input correct choice')
python类的组合的更多相关文章
- 7 python 类的组合
1.组合与重用性 软件重用的重要方式除了继承之外还有另外一种方式,即:组合 组合指的是,在一个类中以另外一个类的对象作为 1.一个类的属性可以是一个类对象,通常情况下在一个类里面很少定义一个对象就是它 ...
- [ python ] 类的组合
首先,使用面向对象是一个人狗大战的实例: class Person: def __init__(self, name, hp, aggr, sex): self.name = name self.hp ...
- python类与对象的组合与继承
1.把类的对象实例化放到一个新的类里面叫做类的组合,组合就是指几个横向关系的类放在一起,纵向关系的类放在一起是继承,根据实际应用场景确定.简单的说,组合用于“有一个”的场景中,继承用于“是一个”的场景 ...
- Python 类的名称空间和组合
一.Python类的名称空间 class Student(object): School = '北京大学' def __init__(self): pass stu1 = Student() stu1 ...
- python - class类 (三) 类的组合
类的组合: #组合 class A1(): def pr(self): return 'a1' class A2(): def pr(self): return 'a2' class A3(): de ...
- python 类知识点总结
python 类知识点总结 面向对象思想: 1.设计的时候,一定要明确应用场景 2.由对象分析定义类的时候,找不到共同特征和技能不用强求 1.简述类.对象.实例化.实例这些名词的含义: 类:从一组对象 ...
- python 类和对象
类和对象 类 1.类的组成 数据和函数,二者是类的属性 2.两个作用: 实例化 属性引用 属性引用:类名.属性(增删改查) 实例化: 类名加括号就是实例化,会自动出发__init__的运行 ...
- Python类和对象
目录 类与对象 其他方法 继承 经典类和新式类 派生 组合 接口.归一化设计与抽象类 继承实现的原理 子类中调用父类的方法 指名道姓 super()方法 多态与多态性 封装 单下划线开头 双下划线开头 ...
- day25类的组合多态封装
类的组合多态与封装类的组合 1. 什么是组合 组合指的是某一个对象拥有一个属性,该属性的值是另外一个类的对象 2. 为何要用组合 通过为某一个对象添加属性(属性的值是另外一个类的对象)的方式,可以 ...
随机推荐
- tcp_nopush高性能
nginx sendfile tcp_nopush tcp_nodelay参数解释
- node 图片验证码生成
var captchapng = require('captchapng'); var http = require("http") var server = http.creat ...
- JS取出两个数组中不重复的值
var array = [0, 1, 2, 3, 4, 'age', 6, 7, 8, 9]; var array2 = [0, 1, 'age', 6, 7, 8, 9]; var arr3 = [ ...
- eclipse 把鼠标指针放在错误的语句上 提示快速修正 不见了的解决方法
Window->Preferences->Java->Editor->Hovers 将[Combined Hover]选择即可,如果第一个[Variable Values]已经 ...
- es6proxy
Proxy 支持的拦截操作一览. 对于可以设置.但没有设置拦截的操作,则直接落在目标对象上,按照原先的方式产生结果. (1)get(target, propKey, receiver) 拦截对象属性的 ...
- LeetCode167.两数之和II-输入有序数组
给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2. 说明: 返回的下标值 ...
- Javascript-全局函数和局部函数作用域的理解
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- uvm设计分析——factory
uvm的factory机制,通过实例一个static类型default factory,并且通过宏将所有例化extend出来的object,component register到该factory的内部 ...
- 仿豆瓣网(电脑版网页)HTML+CSS实现
步骤一:将豆瓣电脑版网页以图片形式保存下来: 利用了chrome里面的插件: 步骤二:将图片放置到PS中,研究布局: 我将其分为header部分,banner部分,section部分,footer部分 ...
- Vue系列之 => 自定义键盘修饰符
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...