关于类的存储模型图
(1)在内存中,类的存储模型如下:
(2)类的名称变量可以随便取,但其指向的类是Person类,类的__dict__方法指向了一块存储类属性和方法的内存,类铜鼓实例化产生实例,而实例通过__class__方法与对应类联系。类和实例本质都是对象。
关于元类定义及结构图
(1)元类的定义:由于类也是对象,而对象是由类实例化出来的,所以,类也是由某个其他的类创建出来,产生类的类就是元类
(2)元类结构图如下:
其中Type类就是元类,分别产生三个类对象,而在Type上面则没有元类
关于类的创建方式
(1)自动创建:
class Person: pass
解释器会自动根据上述语句创建一个类
(2)手动创建
dog = type("dog", (), {"num": 8, "run": run})
通过上述语句,由type元类生成一个dog类,名称变量是dog
关于类的创建流程
(1)创建类时,通过检测__metaclass__属性,来确定使用哪个元类来创建类,如__metaclass__=type,即使用type元类创建类
(2)元类查询机制(重点):首先在类对象中检查有无明确的__metaclass__属性,没有则在类对象的父类中检查有无明确的__metaclass__属性,还没有则在模块中检查有无明确的__metaclass__属性,若还是没有的话,就使用type元类来创建该类对象
关于类的描述
(1)目的:1.方便日后自己来看;2.节省与别人的沟通成本;3.方便生成项目文档
(2)方式:在类和方法的第一行使用三对双引号,写入内容即可
(3)具体代码如下
class Person: """ 类的作用:计算时间 Attribute: count:人数,int """ conut = 8 def run(self, d, s): """ 函数作用:跑步 函数参数: d:距离,int,不可选 s:步长,int,不可选 函数返回值:时间,int,d/s """ print("时间") return d / s def xxx(): """ 函数的作用是xxx :return: xxx """ print("xxx")
使用help()函数可以查看相关描述的显示内容
关于项目文档
(1)生成项目文档使用的内建模块是pydoc
(2)使用方法:在终端中对应文件目录下,使用python -m pydoc -h可以获取该模块的帮助文档