【python39--面向对象组合】】的更多相关文章

面向对象-组合 1.什么是组合 组合指的是某一个对象拥有一个属性,该属性的值是另外一个类的对象 class Foo: xxx = 111 class Bar: yyy = 222 obj = Foo() obj.attr = Bar() print(obj.xxx) >>>111 print(obj.attr.yyy) >>>222 2.为何要用组合 通过为某一个对象添加属性(属性的值是另外一个类的对象)的方式,可以间接地将两个类关联/整合/组合到一起 从而减少类与类之…
面向对象--组合.封装.访问限制机制.property 组合 什么是组合? 组合指的是一个对象中,包含另一个或多个对象 为什么要组合? 减少代码的冗余 怎么用组合? # 综合实现 # 父类 class People: def __init__(self, name, age, sex): self.name = name self.age = age self.sex = sex # 老师类 class Teacher(People): def __init__(self, name, age,…
HashMap:键值对(key-value) 通过对象来对对象进行索引,用来索引的对象叫做key,其对应的对象叫做value. 默认是1:1关系(一对一) 存在则覆盖,当key已经存在,则利用新的value覆盖原有的value 例1:给定一个字符串,求出字符串中每一个单词在字符串中出现的次数 旨意:map的分拣思想. 第一种分拣思想:(1)先为key创建对应的容器(2)使用容器,存放key对应的值 /** * 作为包装类,用来存放英文单词,和该英文单词出现的次数 * @author qjc *…
继承是实现类重用的重要手段,但是它有一个最大的坏处:破坏封装.相比之下,组合也是实现类重用的重要方式,但是采用组合方式实现类重用则能提供更好的封装性.比如人有手一样,在人的类中增加一个手的属性. 何时使用继承呢: 1,子类需要增加额外的属性,不仅仅是属性值的改变 2,子类需要增加自己独有的行为方式 为了保证父类有良好的封装性,不会被子类随意改变,设计父类通常应该遵循以下规则: 1,尽量隐藏父类的内部数据.尽量把父类的所有属性都设置成private访问类型,不要让子类直接访问父类的属性 2,不要让…
组合指的是,在一个类中以另外一个类的对象作为数据属性,称为类的组合 圆环是由两个圆组成的,圆环的面积是外面圆的面积减去内部圆的面积.圆环的周长是内部圆的周长加上外部圆的周长.这个时候,我们就首先实现一个圆形类,计算一个圆的周长和面积.然后在"环形类"中组合圆形的实例作为自己的属性来用 from math import pi class Circle(): def __init__(self,r): self.radius = r def area(self): return self.…
组合: 给一个类的对象封装一个属性,这个属性是另一个类的对象. class GameRole: def __init__(self, name, ad, hp): self.name = name self.ad = ad self.hp = hp def attack(self,p): p.hp = p.hp - self.ad print('%s 攻击 %s,%s 掉了%s血,还剩%s血' %(self.name,p.name,p.name,self.ad,p.hp)) def armame…
该模型为创建自定义类型最常用的方式. <!DOCTYPE html> <html> <head> <title>组合使用构造函数模型和原型模型</title> <script type="text/javascript"> //组合使用构造函数模型和原型模型——构造函数模型用于定义实例属性,原型模型用于定义方法和共享属性. function Student(name,age,sex){ this.name=name…
组合使用构造函数模型和原型模型中的问题,使用对象字面量重写原型模型会有隐患(涉及到原型的动态性),如下例: <!DOCTYPE html> <html> <head> <title>组合使用构造函数模型和原型模型——问题</title> <script type="text/javascript"> //组合使用构造函数模型和原型模型——构造函数模型用于定义实例属性,原型模型用于定义方法和共享属性. functio…
# Author : Kelvin # Date : 2019/1/15 20:44 """ 学校与老师关联 课程与老师和学校关联 """ class School(): def __init__(self, name, profession): self.name = name self.profession=profession class Teacher(): def __init__(self, name, age, gender, sc…
一.Python类的名称空间 class Student(object): School = '北京大学' def __init__(self): pass stu1 = Student() stu1.name = '小明' print(stu1.School) print(Student.name) #error type object 'Student' has no attribute 'name' 1.类可以调用对象的属性吗? 2.对象可以调用类属性吗? 通过上面的代码可以看出,类无法访…