今日大纲

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-面向对象进阶-加载顺序,命名空间,组合(实现松耦合)相关推荐

  1. Python Day 10 函数(名称空间,作用域,作用域链,加载顺序等; 函数的嵌套 global,nonlocal)...

    Python Day 10  函数(名称空间,作用域,作用域链,加载顺序等; 函数的嵌套 global,nonlocal) 名称空间(命名空间): 当程序运行时,代码从上至下一次读取,遇到变量与值, ...

  2. python类加载机制_PHP面向对象自动加载机制原理与用法分析

    本文实例讲述了PHP面向对象自动加载机制原理与用法.分享给大家供大家参考,具体如下: 在学习PHP的面向对象的时候,会知道很多"语法糖",也就是魔术方法.有一个加自动加载的魔术方法 ...

  3. python加载机制_Python 模块的加载顺序

    基本概念 module 模块, 一个 py 文件或以其他文件形式存在的可被导入的就是一个模块 package 包,包含有 init 文件的文件夹 relative path 相对路径,相对于某个目录的 ...

  4. java进阶(9)——JVM jar包加载顺序

    最近工作当中遇到过好几例,由于项目当中依赖了一些框架,而这些框架无法直接修改时,我就直接本地代码写了一个同名同包路径的类,可以直接覆盖框架的类(本文说的框架类,不包括jdk的),屡试不爽.但是心里不免 ...

  5. Java-Day11 面向对象遍程的入门 (类属性的默认值、构造方法、类的成员、static关键字、类的成员加载顺序、Java(权限)访问修饰符)

    目录 1. 类的属性的默认值问题 2. 构造方法(Constructor) 3. 类的成员 3.1 类的成员之一:属性 3.2 UML类图 4. static关键字 5. 类的成员加载(运行)顺序 6 ...

  6. 动态参数 名称空间 作用域 作用域链 加载顺序 函数的嵌套 global nonlocal 等的用法总结...

    03,动态参数 *args,**kwargs # 用户传入到函数中的实参数量不定时,或者是为了以后拓展,# 此时要用到动态参数*args,**kwargs(万能参数.)# *args接收的是所有的位置 ...

  7. [转]web.xml 中的listener、 filter、servlet 加载顺序及其详解

    2019独角兽企业重金招聘Python工程师标准>>> 转自:http://zhxing.iteye.com/blog/399668 在项目中总会遇到一些关于加载的优先级问题,近期也 ...

  8. web.xml加载顺序

    2019独角兽企业重金招聘Python工程师标准>>> 一 1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和< ...

  9. 【Youtobe trydjango】Django2.2教程和React实战系列八【渲染数据库数据与模板加载顺序探究】

    [Youtobe trydjango]Django2.2教程和React实战系列八[渲染数据库数据与模板加载顺序探究] 1. 准备数据 2. 渲染数据库数据到模板 3. 如何在app里加载django ...

最新文章

  1. 限定filesize的数据泵导入导出操作案例
  2. Java实现找出数组中重复次数最多的元素以及个数
  3. [一起读源码]走进C#并发队列ConcurrentQueue的内部世界 — .NET Core篇
  4. sqlite事务模型、性能优化tips、常见误区
  5. 一副眼镜一千多贵吗_成都配眼镜去哪里好一点?怎样配眼镜才不被坑
  6. 代码实现:输入某年某月某日,判断这一天是这一年的第几天?
  7. 前端开发工程师和美工 知识需求的区别
  8. [SCOI2012]喵星球上的点名(树状数组+后缀数组)
  9. pandas dataframe遍历_Pandas循环提速7万多倍!Python数据分析攻略!
  10. 计算机更新bios,升级bios,详细教您主板怎么更新bios
  11. Ping其他电脑ping不通的解决方法
  12. va_list函数学习
  13. BZOJ5109:[CodePlus 2017]大吉大利,晚上吃鸡! (最短路+Hash表+二进制压位)
  14. SQL基础知识整理(自用)
  15. firefox 浏览器证书问题
  16. session垃圾回收机制
  17. 06年计算机竞赛,2006年数学建模校内竞赛结果
  18. Leetcode- 岛屿数量
  19. echart实现地图的逐级钻取
  20. 求后缀表达式的简便方法

热门文章

  1. javaweb学习总结五(内省、beanUtils工具包)
  2. javascrpt 继承
  3. 新手做2D手游该用哪些工具?
  4. 打包签名时出现Conversion to Dalvik format failed with error 1
  5. (转载)linux中编译安装log4cpp
  6. 获取存储过程返回值及代码中获取返回值(转)
  7. (221)FPGA芯片结构组成
  8. (204)浮点数的表示
  9. (36)System Verilog类中方法示例
  10. (02)System Verilog logic数据类型详解