1. 根据类来创建对象被称为 实例化。
2.在python中 首字母大写的名称批的是类。类中的函数称为方法
3. _init_() 是一个特殊的方法,当你根据类创建实例时,python都会自动运行它。在这方法的名称中,开头和末尾各有两个下划线,这是一种约定,旨在避免python默认方法与普通方法发生名称冲突。
4.通过实例访问的变量称为属性。
5.定义类
3.7中:
class 类名():
def _init_(参数1,参数2,....):
def 方法名(参数):
2.7中:
class 类名(object):
def _init_(参数1,参数2,....):
def 方法名(参数):
6.命名的约定很有用,我们通常可以认为首字母大写的名称批是的类,小写的名称批的是根据类创建的实例。
7.访问类属性 实例名.属性
8.调用类的方法 实例名.方法名()
9.可以按需求根据一个类创建任意数量的实例,条件是将每个实例
10.类中的每个属性都必须有初始值,哪怕这个值是0或者空字符串,在有些情况下,如设置默认值时,在方法 _init_() 内指定这种初始值是可行的,如果你对某个属性这样做,就无需包含为它提供初始值的形参。
11.修改属性的值
有三种不同的方式修改属性值:直接通过实例进行修改,通过方法进行修改,通过方法进行递增(递增特定的值)
12.继承
如果你要编写一个类是另一个现成类的特殊版本,可以使用继承,一个类继承另一个类时,它将自动获得另一个类的所有属性和方法,原有的类称为父类,而新类称为子类。子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。
13.子类的方法_init_()
创建子类的实例时,python首先需要完成的任务是给父类的所有属性赋值。因此 _init_()需要父类施以援手。
14.创建父类必须包含在当前文件中,且位于子类前面。定义子类时,必须在括号内指定父类的名称。子类的 _init_()接受创建父类实例所需要的信息。supper()是一个特殊的函数,帮助python将父类和子类关联起来。这行代码让python调用 子类的父类的方法 _init_(),让子类实例包含父类的所有属性。父类也称为超类。
15.python 2.7中继承
在python2.7中,继承的语法稍有不同,函数super()需要两个实参:子类名和对象self。如:supper(子类名,self)._init_(父类参数),而在 python3中不需要参数如: supper()._init_(父类参数)
16.给子类定义属性和方法
让一个类继承另一个类后,添加区分子类和父类所需要的新属性和方法。
17.对于子类的特殊化程序没有任何限制。可以根据所需的准确程度添加任意数量的属性和方法,如果一个属性或方法是所有对象都有的,而不是子类特有的,就应该将其加入到父类,而不是子类中。这样,使用父类的所有实例都获得相应功能,而子类只包含子类特有的属性和行为代码。
18.重写父类的方法
对于父类的方法只要它不符合子类模拟的实物行为,都可对其进行重写。可在子类中定义一个与要重写的父类方法名相同的方法。这样python将不会考虑这个父类的方法,而只关注你在子类中定义的相应方法。
19.将实例作用属性
使用代码模拟实物时,可能会发现自己给类添加的细节越来越多,属性和方法清单以及文件都越来越长,在这种情况下,可以将类的一部分作为独立的类提取出来,放到另一个类中,并将新类实例用作原来类的一个属性(self.新属性 = 新类名()),可以将大型类拆分成多个协同工作的小类。
20.类的导入
导入单个类 : from 模块名 import 类名
在一个模块中存储多个类:可根据需要在一个模块中存储任意数量的类。
从一个模块中导入多个类: from 模块名 import 类名1,类名2,。。。。。
导入整个模块: import 模块名 ,我们使用 module_name.class_name 访问需要的类。
导入模块中的所有类: from module_name import *
需要从模块中导入很多类时,量好导入整个模块,并使用 module_name.class_name 语法来访问类。这样做,虽然文件开头并没有列出所有类,但你清楚地知道程序的哪些地方使用了导入的模块,还避免了导入模块中的每个类可能引发的名称冲突。
在一个模块中导入别一个模块:
21.类编码风格
类名应采用驼峰命名法:即类名中的每个单词产首字母都大写,而不使用下划线,实例名和模块名都采用小写格式,并在单词之间加上下划线。
对于每个类都应紧跟在类定义后面包含一个文档字符串,这种文档字符串简要地描述类的功能,并遵循编写函数的文档字符串时采用的格式约定,每个模块也都应包含一个文档字符串,对其中的类可用于做什么进行描述。
可以使用空行来组织代码,但不要滥用,在类中,可以使用一个空行分隔方法:而在模块中,可以使用两个窄来分隔类。
需要同时导入标准库中的模块和你编辑的模块时,先编辑导入标准库模块的 import 语句,再加一空行,然后编写导入你自己编写的模块 import语句。