python 第9章 类

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语句。

 

 

 

 

           

     

 

 

 

 

 

 

 

 

 

 

 

 

 

     

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值