目录
1:类的介绍
1.1:self介绍
- 指向实例本身,当创建实例时,自动调用
- 变量以self为前缀得变量,可供类中的所有方法调用,还可以使用类中的任何实例来访问这些变量
1.2:python中的类
- 可将类视为有关如何创建实例的说明
1.3:在python中的命名约定
- 通常首字母大写的为类,而首字母小写的为实例
##1.4self的使用 - Dog.name = self.name
在运行my_dog.sit()时,python在Dog类中查找sit方法,并运行其代码块
1.5:实例的创建
- 可以按照需求创建任意的实例,条件是及将每一个实例都存储在不同的位置中,或占用列表或字典的不同位置
1.6:修改类中属性的值
- 1
直接通过修改属性的值 - 2
通过方法修改属性的值 - 3
通过方法递增,增加特定的值
2:类的继承
- 子类会继承父类的所有方法和属性
2.1:super()方法介绍
- super()方法:将子类和父类关联起来,也就是说使用super()方法会获得父类的同名方法
2.2:父类和子类的区别
- 1:父类有的属性和方法子类全都有
- 2:子类只含有子类自身特有的属性和方法
2.3:父类方法的重写
- 1:对于父类的方法,子类不适合
- 2:子类的方法和父类方法重名,python只会关注子类的方法,不会关注父类的方法
- 3:对于继承,子类可以继承父类的精华,并剔除不需要的糟粕
3:将实例用作属性
- 用途:
当属性和方法清单以及文件都越来越长,可以将类的一部分作为一个独立的类提取出来,这样就可以将一个大型的类拆分成为多个共同协作的小类
4:模拟实物
- 1:使自己的代码更接近实际
- 2:让代码更加高效
5:导入类
- 作用:将类进行有效的分开,分别存入到模块中
5.1:导入单个类
- 再一个模块中只创建一个类
5.2:在一个模块中存储多个类
- 虽然在一个模块中的类之间,应存在某种相关性,但是可以根据需要在一个模块中存储任意多个类,可以将大部分逻辑存储在模块中
5.3:在一个模块中导入多个类
- 语法:
from py_name import class1_name, class2_name
- 注意:
1:每个类名之间分别运用逗号分割
2:导入必要的类之后,可以在程序中创建任意数量的实例
5.4:导入整个模块
- 语法:
imprt py_name
- 访问模块中的类
使用py_name.class_name来访问类
5.4.1:好处
- 1:导入方法简单也易于阅读
- 2:由于创建类实例的代码都包含实例名,因此不会与当前文件使用的任何名称发生冲突
5.5:导入模块中的所有类
- 不推荐使用:
1:不知道导入模块中的哪一个类
2:会和程序中的类名发生冲突 - 语法:
from py_name import *
- 使用的原因
1:会在别人的代码中看见
2:需要在一个模块中导入很多的类的时候,最好导入整个模块,并使用py_name.class_name语法来访问,但是可以清楚的知道早主程序中的那些地方导入了模块,虽然文件开头并没有列出所有的类,还避免了导入模块中的每个类可能引发的名称冲突
6:类的调用
- 语法:
from py_name import class_name
- 实现:
其中import语句让python打开py_name文件,并导入其中的class_name类,这样就可以再现在的代码中使用class_name类了,就如同它在这个文件中定义的一样 - 好处:
通过将类移到一个模块中,并导入该模块。你依然可以使用其所有功能,但主程序文件变得简洁而易于阅读,这还将让你将大部分逻辑存储在独立的文件中
7:类编码风格
7.1:起名
- 1:类名的使用双驼峰起名
- 2:实例名和方法名用下划线起名
7.2:文档字符串
- 对于每一个类,后面都应该紧跟一个文档字符串,用来描述类的用法
- 对于每一个模块,也应该有一个文档字符串
7.3:代码间的空行
- 在类里面用一个空行来分割方法
- 在模块里面用两个空行来分割类
7.4:导库操作
- 在导入库的时候,先导入标准库,再导入自定义的库,这样有助于观看代码的人的同一认识导库标准