一.内容回顾
类:具有相同属性和方法的一类事务
# 描述一类事务轮廓的一个机制
#商品/用户/店铺
对象/实例: 对象(实例)就是类的实例化
# 对象就是类的一个具体的表现
#某一件特定的商品/某个人/某一家店
实例化 : 类 --> 对象
实例化的过程:
#1.创建一个属于对象的空间
#2.执行__init__,把这个空间传递给init的第一个参数
#3.把这个空间地址作为返回值返回给对象变量
#如何定义一个类
#class Cls:pass
#在类中直接可以定义的内容:
#静态属性 : 这个类拥有的,所有的对象都共享的属性
#动态属性: 方法定义在类中的函数,描述的是所有对象共享的行为
#类名的作用
#实例化的时候 对象 = 类名()
# 操作静态属性
#对象名的作用:
#操作对象的属性
#调用方法
二.今日内容
#类的命名空间
#类的代码的执行顺序
#静态属性的意义,和他所在的位置
#动态属性所存储的位置
#对象的命名空间
#如何建立起和类之间的关系
#对象的属性是如何存储的
#组合
#常用的技能
# class A: # Country = 'China' # def talk(self): # print('%s is talking'%self.name) # alex = A()
# 一个类可不可以没有__init__? 可以 # 在没有__init__的情况下,实例化经历了哪些步骤??? # 1.创建一个空间给对象 # 2.将这个空间的地址返回 # alex.name = 'alex' # alex.talk()
# class A: # Country = 'China' # def __init__(self,name): # self.name = name # def talk(self): # print('%s is talking'%self.name) # 类中的代码是在什么时候执行的? 在实例化之前
# 新增静态属性 # A.静态属性名 = 'abc' # print(A.静态属性名) # 修改静态属性 # A.Country = '印度' # print(A.Country) # 删除静态属性 # del A.Country # print(A.Country) # 报错
# print(A.__dict__) # 只能看,不能改也不能删
# 类的命名空间中有什么: # 静态属性 # 动态属性(方法)
# 对象的命名空间和类的命名空间之间的关系 : # 对象和类之间有一个单向的联系,类对象指针 # 对象在使用某个名字的时候,如果在自己的空间中没有找到,就要到类的空间中去找
# 如果静态变量是一个不可变数据类型,那么只要对象修改这个数据,就相当于在对象的空间中新建 # 如果静态变量是一个可变数据类型,那么对象修改这个容器中的元素,相当于修改类的空间中的元素 # 如果静态变量是一个可变数据类型,那么对象直接对这个变量重新赋值,相当于修改对象自己空间中的元素 # 大结论 # 只要是静态变量,就用类名去修改,永远修改成功,并且所有的对象都共享这个改变
# 总结 # 对象的命名空间:类指针对象的所有属性 # 类的命名空间:方法和(静态属性字段) # 对象在寻找名字的时候 : 先找对象自己内存空间中的,找不到就去类的命名空间中寻找 # 类中的名字是什么时候写入内存的 : 代码从上到下执行的时候就已经写入的.一定是在实例化之前 # 静态变量 : 尽量用类名去操作