Python——面向对象编程(类和对象) 3

多态

面向对象三大特性

        1. 封装根据职责属性和方法封装到一个抽象的中。

                定义类的准则。

        2. 继承实现代码的重用,想同的代码不需要重复的编写。

                设计类的技巧。

                子类针对自己特有的需求,编写特定的代码。

        3. 多态不同的子类对象调用相同的父类方法,产生不同的执行结果。

                多态可以增加代码的灵活度

                以继承重写父类方法为前提。

                是调用方法的技巧,不会影响到类的内部设计

01. 类的结构

1.1 术语——实例

        1. 使用面向对象开发,第一步是设计

        2. 使用类名()创建对象,创建对象的动作有两步:

                1. 在内存中为对象分配空间

                2. 调用初始化方法__init__为对象初始化

        3. 对象创建后,内存中就有了一个对象的实实在在的存在——实例。

 因此,通常也会把:

        1. 创建出来的对象叫做实例

        2. 创建对象的动作叫做实例化

        3. 对象的属性叫做实例属性

        4. 对象调用的方法叫做实例方法

在程序执行时:

        1. 对象各自拥有自己的实例属性

        2. 调用对象方法,可以通过self.。

                访问自己的属性

                调用自己的方法

结论:

        每一个对象都有自己独立的内存空间,保存各自不同的属性

        多个对象的方法,在内存中只有一份,在调用方法时,需要把对象的引用传递到方法内部。

1.2 类是一个特殊的对象

python 中 一切皆对象

        class AAA:定义的类属于类对象

        objl = AAA()属于实例对象

在程序运行时,同样会被加载到内存。

在python中,是一个特殊的对象——类对象。

在程序运行时,类对象在内存中只有一份,使用一个类可以创建出很多个对象实例

除了封装实例属性方法外,类对象还可以拥有自己的属性方法

        1. 类属性

        2. 类方法

通过类名可以访问类的属性或者调用类的方法

02. 类属性和实例属性

2.1 概念和使用

        类属性就是给类对象中定义的属性

        通常用来记录与这类相关的特征

        类属性不会用于记录具体对象的特征

2.2 属性的获取机制(科普)

在python中属性的获取存在一个向上查找机制

因此,要访问类属性有两种方式:

        1. 类名.类属性

        2. 对象.类属性(不推荐)

注意:如果使用对象.类属性 = 值 赋值语句,只会给对象添加一个属性,而不会影响到类属性的值。

03. 类方法和静态方法

3.1 类方法

类属性就是针对类对象定义的属性

        使用赋值语句在class关键字下方可以定义类属性

        类属性用于记录与这个类相关的特征。

类方法就是针对类对象定义的方法

        在类方法内部可以直接访问类属性或者调用其他的类方法

语法如下:

类方法需要用修饰器 @classmethod 来标识,告诉解释器这是一个类方法

类方法的第一个参数应该是cls

        由 哪一个类 调用的方法,方法内的cls就是哪一个类的引用。

        这个参数和实例方法的第一个参数是self类似。

        提示使用其他名称也可以,不过习惯使用cls。

通过类名,调用类方法调用方法时,不需要传递cls参数。

在方法内部

        可以通过cls,访问类的属性。

        也可以通过cls,调用其他的类方法。

3.2 静态方法

在开发时,如果需要在中封装一个方法,这个方法:

        既不需要访问实例属性或者调用实例方法

        也不需要访问类属性或者调用类方法

这个时候,可以把这个方法封装成一个静态方法

语法如下:

 静态方法需要用修饰器@staticmethod来标识,告诉解释器这是一个静态方法

通过类名,调用静态方法

猜你喜欢

转载自blog.csdn.net/2301_80269840/article/details/140531952