1. 名词解释

          类(class):

                 简单理解为具有相同属性和方法的对象的集合。定义了该集合中每个对象公有的属性和方法。


          类变量:

公用。定义的位置在类中,函数外(使用较少)。在类方法中的定义的所有变量,都是此方法的局部变量,也就是只能在此方法中使用

         实例变量:

函数(方法)中变量,供每个实例单独使用。

          

实例方法:

self,只能通过实例调用。

类方法:

@classmethod”装饰器,第一个参数位必须为cls,可以通过类或者实例变量调用。

静态方法:

@staticmethod”装饰起,参数不需要指定cls和self,可以通过类或者实例变量调用。

      

继承:

        继承是面向对象的一个特点,通过继承,产生的新类(也叫子类)可以使用父类函数中某些方法和是属性,这个过程就叫做继承。

封装:

      类中把某些属性和方法隐藏起来(或者说定义成私有的),只在类的内部使用、外部无法访问,或者留下少量接口(函数)供外部访问。

多态:

      同一种调用方式,不同的执行结果(因为调用的对象不同,导致的结果不同,其实python的多态和c++等语言不同,因为python本身即就是鸭子类型语言,不需要可以强调多态。

    

方法重写:

         发生在继承的场景下,也就是直接编写与父类中同名的函数,该函数就是对父类的函数的重写。

实例化:

         用类生成一个实例,这个过程就叫做实例化。


2. 类的定义:

      2.1 类的定义:

          

python 类变量 在初始调用 python 类变量和类方法_python 类变量 在初始调用

         重点:

class,空格后面是类的名字,然后是小括号冒号(小括号可以添加要继承的类),注意缩进。

类变量,类变量可以被类和实例对象访问,被全部实例对象共享。

类方法,定义在类中,第一个参数为cls,需要使用@classmethod修饰,可以被类和实例对象访问,只能访问类变量

self,该方法只能被实例对象调用,可以访问类变量和实例变量

实例变量,实例变量只能被实例方法访问(类方法不可以)

静态方法,定义在类中,使用@staticmethod修饰,不限定参数的个数(建议不使用self,cls参数,因为在类中,这两个参数具有特殊意义),可以被实例对象和类调用,不能访问实例变量和实例方法,可以访问类变量和类方法(只能通过类名.类方法(类变量)访问)


2.2 self 和 cls


      在类中,self和cls是具有特殊意义的,因此建议不要将关键字定义为其他作用

     2.21 self: 

实例方法。

              (2)self指向的是类实例对象本身(注意:不是类)。

实例对象.实例方法调用,那么self参数不在参数传递范围内(因为self指向的就是实例对象本身),直接传递其他的参数即可。

类名.实例方法(实例对象,其他参数),区别于通过类直接调用。


           示例:

                 

python 类变量 在初始调用 python 类变量和类方法_python 类变量 在初始调用_02


          运行结果:

                

python 类变量 在初始调用 python 类变量和类方法_实例方法_03

                              

2.22 cls:class的缩略    

                     (1)作为函数的第一个参数,表明该参数是一个

类方法。


                     (2)cls指向的是类本身(注意:不是实例)。


类(或者实例对象).类方法调用,那么cls参数不在参数传递范围内(因为cls指向的就是类本身),直接传递其他的参数即可。

                  示例:

                      

python 类变量 在初始调用 python 类变量和类方法_类方法_04

                  运行结果:

                       

python 类变量 在初始调用 python 类变量和类方法_python 类变量 在初始调用_05

注意:cls和self作为参数时,是可以替代的(但是最好不要,为了代码的可读性,以防止因为疏忽造成的位未知问题)

                          

python 类变量 在初始调用 python 类变量和类方法_类变量_06

      

     2.3 类方法,实例方法,静态方法

         实例方法:self作为第一个参数,只能被实例对象调用,可以操作类变量和实例变量

                     

python 类变量 在初始调用 python 类变量和类方法_类变量_07

        运行结果:

                     

python 类变量 在初始调用 python 类变量和类方法_类变量_08

                          

         类方法: cls作为第一个参数,可以被实例对象和类调用,只能访问类变量

                    

python 类变量 在初始调用 python 类变量和类方法_类方法_09

            运行结果:

                    

python 类变量 在初始调用 python 类变量和类方法_实例方法_10

        

            

             类方法调用实例变量:

                 

python 类变量 在初始调用 python 类变量和类方法_python 类变量 在初始调用_11

               运行结果:

                       

python 类变量 在初始调用 python 类变量和类方法_类变量_12

      


                静态方法:不需要self或者cls作为第一个参数,需要使用@staticmethod装饰器修饰,可以被实例对象和类调用,只能访问类变量                 

                           

python 类变量 在初始调用 python 类变量和类方法_实例方法_13

                   运行结果:

                           

python 类变量 在初始调用 python 类变量和类方法_实例方法_14

               类方法和静态方法的区别:

                       (1)类方法需要装饰器 @classmethod修饰,静态方法需要装饰器@staticmethod修饰

                       (2)在访问类变量时,方式不同,静态方法只能通过类名访问,而类方法还可以通过cls关键字访问

                

python 类变量 在初始调用 python 类变量和类方法_python 类变量 在初始调用_15

 

python 类变量 在初始调用 python 类变量和类方法_类变量_16

    2.4 类的特殊方法:

        __init__ 方法: 构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值  

                  使用示例:

                      

python 类变量 在初始调用 python 类变量和类方法_类变量_17

   

                 运行结果:

                          

python 类变量 在初始调用 python 类变量和类方法_类方法_18



        __str__ 方法,在用户直接打印示例时,需要通过return返回输出内容;如果未明确定义,系统则返回实例地址

             示例:

                 

python 类变量 在初始调用 python 类变量和类方法_类变量_19

                                                           

python 类变量 在初始调用 python 类变量和类方法_类方法_20

              运行结果:

                  

python 类变量 在初始调用 python 类变量和类方法_实例方法_21

                           

python 类变量 在初始调用 python 类变量和类方法_类方法_22


交互模式下,定义直接输入对象名称时回车显示的信息,需要

                 

python 类变量 在初始调用 python 类变量和类方法_类变量_23

      

python 类变量 在初始调用 python 类变量和类方法_实例方法_24