python中,类的加载顺序

类是在文件加载时,会跟着加载

1  类名

2  类中的变量,从上到下,依次进行

3 加载到方法时,方法内的内容不执行,但是会开辟一个空间用来存储方法内的数据

4 当类内的方法和变量都加载完成时,会将类名指向self参数。

class Student:        # 第一步
def __init__(self,name,age,sex): # 第二步
self.name = name
self.age = age
self.sex = sex
a = 1 # 第三步
b = 2 # 第四步
def fun(): # 第五步
pass
# 第六步,类名指向self
yang = Student('小明',20,'男')

5 如果类中存在两个名称相同的变量或者方法,那么输出后的内容是后加载的变量或者方法的内容

class Student:
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex
a = 1
b = 2
a = 4 # 变量的输出结果是这个
print(a)
def fun():
pass
def fun():
print("in the func") # 函数的输出结果是这个 yang = Student('小明',20,'男')

类外创建对象时,每个self参数对应各自一个内存空间,并将信息增加到这个内存空间

 

每个对象的内存空间中有个类指针,相当于一个变量,里面存在着一个类的地址
如果自己的空间中有这个名字,那么他就直接在自己的空间中调用

class Student:
country = 'China'
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex zhang = Student('小明',23,'男’)
li= Student('小花',21,'女’)
li.country = 'us'
print(zhang.country) # 输出结果为China
print(li.country) # 输出结果为us

  当自己内存中不存在这个数据的情况下,它会根据指针到类中去查找,如果有就返回,如果没有就报错

  如果每个对象都需要调用同一个变量,那么他们需要的变量必须调用的是类中的变量,而不是自己内存中存在的变量。

主要是对一个对象.名字直接赋值,那么就是在这个对象的空间内创建了新的属性
对一个可变的数据类型内部的变化,那么仍然是所有的对象的类共享改变的成果

class B:
l = [0]
def __int__(self):
self.name= name
b1 = B('小明')
b2 = B('小黑') b1.l[0]+=1 # 因为l是可变类型,所以这类也改变了,类中的变量
print(b2.l[0]) # 结果为1
b1.l = [123] # 这个值就是在b1中的变量,对类中的变量没影响
print(b2.l) # 结果是0

耦合(相互纠缠)

组合: 一个类的对象是另一个类的对象的属性

类,就可以调用上面的类中的数据和方法

class Student:
def __init__(self,name,num,course):
self.name = name    # 这里就是调用了下面那个类的属性,course的对象成了另一个类的对象的属性
self.num = num
self.course = course class Course:
def __init__(self,name,price,period):
self.name = name
self.price = price
self.period = period
python = Course('python',25000,'6 months')
s1 = Student('小黑',10085,python)
s2 = Student('小洪',10084,python)
s3 = Student('小李',10083,python)
# print(s1.__dict__)
python.price = 30000
python.period = '7 months'

Python的类的组合的更多相关文章

  1. python类的组合

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

  2. day24 python学习 类 画元,命名空间作用域,组合,人狗大战升级

    类命名空间与对象.实例的命名空间 创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性 而类有两种属性:静态属性和动态属性 静态属性就是直接在类中定义的变量 动态属性就 ...

  3. 7 python 类的组合

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

  4. python:类与对象命名空间、面对对象的组合用法

    1,类里可以定义两种属性: #静态属性 #静态属性就是直接在类中定义的变量 #动态属性 #动态属性就是定义在类中的方法 class Course: language = ['Chinese']#静态属 ...

  5. python - class类 (三) 类的组合

    类的组合: #组合 class A1(): def pr(self): return 'a1' class A2(): def pr(self): return 'a2' class A3(): de ...

  6. [ python ] 类的组合

    首先,使用面向对象是一个人狗大战的实例: class Person: def __init__(self, name, hp, aggr, sex): self.name = name self.hp ...

  7. python面向对象之类的组合

    一.python类的组合:给一个类的对象封装一个属性,这个属性是另一个类的对象二.组合的意义:让类的对象与另一个类的对象产生关系,类与类之间产生关系.三.例子模拟英雄联盟写一个游戏人物的类 要求:(1 ...

  8. python - class类 (四) 三大特性之一 :继承

    继承: #继承 #什么时候用继承? # 1.当类之间有显著的不同,并且较小的类是较大的类的所需的组建时,用组合比较好. # 2.当类之间有很多相同的功能,提取这些共同的功能做成基类,用继承比较好 # ...

  9. python的类和对象

    一.面向对象和面向过程 1.1面向过程的特点 优点是:极大的降低了写程序的复杂度,只需要顺着要执行的步骤,堆叠代码即可. 缺点是:一套流水线或者流程就是用来解决一个问题,代码牵一发而动全身. 1.2面 ...

随机推荐

  1. Form 组件的学习

    学习链接:http://www.cnblogs.com/haiyan123/p/7778888.html Form组件可以做的几件事情: 1.用户请求数据验证 2.自动生成错误信息 3.打包用户提交的 ...

  2. 严选 | Elasticsearch史上最全最常用工具清单【转】

    1.题记 工欲善其事必先利其器,ELK Stack的学习和实战更是如此,特将工作中用到的“高效”工具分享给大家. 希望能借助“工具”提高开发.运维效率! 2.工具分类概览 2.1 基础类工具 1.He ...

  3. 《Essential C++》读书笔记 之 目录导航

    <Essential C++>读书笔记 之 目录导航 2014-07-06 第一章:<Essential C++>读书笔记 之 C++编程基础 第二章:<Essentia ...

  4. 用VSCode写Vue要用到的配置

    [本文出自天外归云的博客园] 文件-首选项-设置-打开settings.json-用户设置区域填写: { "workbench.colorTheme": "Monokai ...

  5. 快速开发项目,用到的工具:UI 设置利器 sketch

    需求设计: axaure8.0 tool: teambition/石墨.幕布. 接口管理tool(后端开发接口,pc,m,app使用) https://www.eolinker.com/#/ ui 设 ...

  6. [转]让iframe自适应高度-真正解决

    原文地址:https://www.cnblogs.com/rogge7/p/7762052.html 需求:实现 iframe 的自适应高度,能够随着页面的长度自动的适应以免除页面和 iframe 同 ...

  7. golang处理signal

    signal一般用来实现优雅重启,或者重新加载配置文件等操作. 废话不多说,上表格 动作 号码 信号 golang kill pid 15 SIGTERM terminated kill -9 pid ...

  8. Android 最流行的吸顶效果的实现及代码

    开始逐渐领略到ItemDecoration的美~ 今天让我 使用 ItemDecoration 来完成 可推动的悬浮导航栏的效果,最终实现的效果如下图: 具体实现步骤如下: 根据我前面的文章所讲的Re ...

  9. phpstudy 升级(更换) mysql 版本

    原文链接:http://phpstudy.php.cn/jishu-php-3131.html 一.下载新版 mysql 例如 mysql5.7: https://dev.mysql.com/down ...

  10. JavaCC从入门到出门

    一.JavaCC JavaCC是java的compiler compiler.JavaCC是LL解析器生成器,可处理的语法范围比较狭窄,但支持无限长的token超前扫描. 安装过程: 我是从githu ...