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. Mathematica 11.1.0 下载及注册流程

    新版本注册机: http://files.cnblogs.com/files/dabaopku/Mathematica_11.1.0_Keygen.exe.zip 类似于11.0, 在控制台运行, 比 ...

  2. Linux nohup用法

    在应用Unix/Linux时,我们一般想让某个程序在后台运行,于是我们将常会用 & 在程序结尾来让程序自动运行. 比如我们要运行mysql在后台: /usr/local/mysql/bin/m ...

  3. MXNET:卷积神经网络

    介绍过去几年中数个在 ImageNet 竞赛(一个著名的计算机视觉竞赛)取得优异成绩的深度卷积神经网络. LeNet LeNet 证明了通过梯度下降训练卷积神经网络可以达到手写数字识别的最先进的结果. ...

  4. 一次xxoo提权

    数据库root权限.然并卵. 看了一下phpinfo得知是mysql 5.0 的 然后想要通过udf之类的提权一波,结果一执行sql语句就被狗拦截了. 然而数据库这条路是GG了 OS 名称: Micr ...

  5. 力导向图Demo

    <html> <head> <meta charset="utf-8"> <title>力导向图</title> < ...

  6. mysql主从复制-方案2

    MySQL主从介绍 (两台机器数据同步) 主:-->binlog 从:-->relaylog 主上有一个log dump线程,用来和从的I/O线程传递binlog 从上有两个线程,其中I/ ...

  7. 【AI】神经网络基本词汇

    neural networks 神经网络activation function 激活函数hyperbolic tangent 双曲正切函数bias units 偏置项activation 激活值for ...

  8. Centos7 Crontab

    Centos7 Crontab # 查看crontab -l # 编辑 crontab -e # 重启 service crond restart ccrontab 编写规则 # 分 时 日 月 周 ...

  9. Kafka集群管理工具kafka-manager的安装使用

    一.kafka-manager简介 kafka-manager是目前最受欢迎的kafka集群管理工具,最早由雅虎开源,用户可以在Web界面执行一些简单的集群管理操作.具体支持以下内容: 管理多个集群 ...

  10. nginx 报错 connect() failed (111: Connection refused) while connecting to upstream

    公司网站搬迁到新服务器后,发现站点访问不了,network里面提示502,查看相关的server配置,感觉没有什么问题,经过测试发现txt.html.等非php文件能够直接访问,也就是php访问不了, ...