python-day19-面向对象进阶-加载顺序,命名空间,组合(实现松耦合)
今日大纲
1.类的加载顺序
2.类和对象的命名空间
3.组合
1.类的加载顺序
加载顺序:
类中从上至下写入内存,遇到方法只加载进内存中,方法不会执行,最后类名指向这个类的内存空间地址。
2.类和对象的命名空间
类里存放的内容:
1.静态变量
2.动态变量(方法)
注:在操作静态变量时候最好使用类名来操作,这样所有的对象在操作这个静态变量都会发生变化
对象存放的内容:
1.对象的属性
2.类指针
对象的取值顺序:
1.对象空间
2.类空间
注:对象在类空间都没有找到值会报错
类的取值顺序:
1.类空间
注:如果类里不存在则报错
类里有可变数据类型的例子:
class Test:lis = []def __init__(self,name):self.name = namet1 = Test('t1') t1.lis.append('t1') t2 = Test('t2') print(t2.lis) # ['t1'] 在对象空间操作类空间里的可变数据类型,所有对象和类都会用改变后的结果 t2.lis = ['t2'] # 这样相当于在t2对象空间里赋值了一个key = value print(t2.lis) # ['t2'] print(Test.lis) # ['t1'] print(t2.__dict__) # {'name': 't2', 'lis': ['t2']}
注:对象.变量名 = value 是在对象空间添加一个变量名和value
3.组合
类的对象的属性是另一个类的对象。
松耦合的表现:
重复的值(写死的值)都是通过另一个类的对象来操作,如果要修改也只需要修改另一个类的对象属性。
组合的例子:
class Course:def __init__(self,name,price,time):self.name = nameself.price = priceself.time = timeclass Student:def __init__(self,name,age,sex,course):self.name = nameself.age = ageself.sex = sexself.course = coursedef pri(self):msg = """姓名:%s年龄:%s性别:%s报名课程:%s课程价格:%s课程时长:%s""" %(self.name,self.age,self.sex,self.course.name,self.course.price,self.course.time)print(msg)python = Course('python',111,'6个月') # 先创建python课程 zz = Student('zz',11,'boy',python) # 实例化对象在课程参数那把python对象传入 tt = Student('tt',22,'boy',python) zz.pri() python.price = 11111 # 如果创建的学生对象很多,只需要修改课程对象里的属性即可 python.time = '7个月' tt.pri() """姓名:zz年龄:11性别:boy报名课程:python课程价格:111课程时长:6个月姓名:tt年龄:22性别:boy报名课程:python课程价格:11111课程时长:7个月 """
转载于:https://www.cnblogs.com/zezhou/p/10601714.html
python-day19-面向对象进阶-加载顺序,命名空间,组合(实现松耦合)相关推荐
- Python Day 10 函数(名称空间,作用域,作用域链,加载顺序等; 函数的嵌套 global,nonlocal)...
Python Day 10 函数(名称空间,作用域,作用域链,加载顺序等; 函数的嵌套 global,nonlocal) 名称空间(命名空间): 当程序运行时,代码从上至下一次读取,遇到变量与值, ...
- python类加载机制_PHP面向对象自动加载机制原理与用法分析
本文实例讲述了PHP面向对象自动加载机制原理与用法.分享给大家供大家参考,具体如下: 在学习PHP的面向对象的时候,会知道很多"语法糖",也就是魔术方法.有一个加自动加载的魔术方法 ...
- python加载机制_Python 模块的加载顺序
基本概念 module 模块, 一个 py 文件或以其他文件形式存在的可被导入的就是一个模块 package 包,包含有 init 文件的文件夹 relative path 相对路径,相对于某个目录的 ...
- java进阶(9)——JVM jar包加载顺序
最近工作当中遇到过好几例,由于项目当中依赖了一些框架,而这些框架无法直接修改时,我就直接本地代码写了一个同名同包路径的类,可以直接覆盖框架的类(本文说的框架类,不包括jdk的),屡试不爽.但是心里不免 ...
- Java-Day11 面向对象遍程的入门 (类属性的默认值、构造方法、类的成员、static关键字、类的成员加载顺序、Java(权限)访问修饰符)
目录 1. 类的属性的默认值问题 2. 构造方法(Constructor) 3. 类的成员 3.1 类的成员之一:属性 3.2 UML类图 4. static关键字 5. 类的成员加载(运行)顺序 6 ...
- 动态参数 名称空间 作用域 作用域链 加载顺序 函数的嵌套 global nonlocal 等的用法总结...
03,动态参数 *args,**kwargs # 用户传入到函数中的实参数量不定时,或者是为了以后拓展,# 此时要用到动态参数*args,**kwargs(万能参数.)# *args接收的是所有的位置 ...
- [转]web.xml 中的listener、 filter、servlet 加载顺序及其详解
2019独角兽企业重金招聘Python工程师标准>>> 转自:http://zhxing.iteye.com/blog/399668 在项目中总会遇到一些关于加载的优先级问题,近期也 ...
- web.xml加载顺序
2019独角兽企业重金招聘Python工程师标准>>> 一 1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和< ...
- 【Youtobe trydjango】Django2.2教程和React实战系列八【渲染数据库数据与模板加载顺序探究】
[Youtobe trydjango]Django2.2教程和React实战系列八[渲染数据库数据与模板加载顺序探究] 1. 准备数据 2. 渲染数据库数据到模板 3. 如何在app里加载django ...
最新文章
- 限定filesize的数据泵导入导出操作案例
- Java实现找出数组中重复次数最多的元素以及个数
- [一起读源码]走进C#并发队列ConcurrentQueue的内部世界 — .NET Core篇
- sqlite事务模型、性能优化tips、常见误区
- 一副眼镜一千多贵吗_成都配眼镜去哪里好一点?怎样配眼镜才不被坑
- 代码实现:输入某年某月某日,判断这一天是这一年的第几天?
- 前端开发工程师和美工 知识需求的区别
- [SCOI2012]喵星球上的点名(树状数组+后缀数组)
- pandas dataframe遍历_Pandas循环提速7万多倍!Python数据分析攻略!
- 计算机更新bios,升级bios,详细教您主板怎么更新bios
- Ping其他电脑ping不通的解决方法
- va_list函数学习
- BZOJ5109:[CodePlus 2017]大吉大利,晚上吃鸡! (最短路+Hash表+二进制压位)
- SQL基础知识整理(自用)
- firefox 浏览器证书问题
- session垃圾回收机制
- 06年计算机竞赛,2006年数学建模校内竞赛结果
- Leetcode- 岛屿数量
- echart实现地图的逐级钻取
- 求后缀表达式的简便方法