”测试开发全日制学徒班7期第10天“-pythone面向对象编程

  • pythone面向对象编程

    • 面向过程编程

      • 简介

        • 面向过程编程(Procedural Programming)是一种基于过程或函数的编程范式。 它将程序视为一系列的顺序执行的过程或函数,每个过程或函数完成特定的任务,通过调用其他过程或函数来协同工作。 在面向过程编程中,数据和函数(过程)是分离的,函数可以直接访问和操作数据。

      • 特点

        • 强调任务和步骤:面向过程编程将程序划分为一系列的任务或步骤,这些任务按照顺序执行,以完成特定的功能。

        • 数据与函数分离:在面向过程编程中,数据和函数(过程)是分离的,函数在需要时对数据进行操作。

        • 直接操作数据:函数在执行过程中可以直接访问和操作数据,这样可能会导致数据在多个地方被访问和修改,增加了代码的复杂性和维护的困难。

        • 代码复用:通过将常用的代码片段封装成函数,实现代码的复用。

        • 执行效率:由于没有面向对象编程中的对象创建、继承和多态等机制,面向过程编程通常可以更高效地执行。

    • 面向对象编程

      • 简介

        • 面向对象编程(Object-Oriented Programming,OOP)是一种基于对象的编程范式。 它将程序视为一组相互作用的对象,每个对象都有自己的属性(数据)和方法(行为)。 通过对象之间的交互和消息传递,来完成任务和解决问题。

      • 特点

        • 封装性(Encapsulation):将数据和对数据的操作封装在对象中,仅向外部暴露必要的接口,隐藏了内部的实现细节。

        • 继承性(Inheritance):通过继承机制,可以从已存在的类派生出新的类,新类自动获得了父类的属性和方法,并可以在此基础上进行扩展和修改。

        • 多态性(Polymorphism):同一种类型的对象在不同的上下文中可以有不同的行为,即在不同的情况下可以使用相同的接口来实现不同的功能。

        • 类与对象:类是对象的模板,描述了对象的属性和方法。对象是类的实例,通过类创建的实例可以访问和操作该类定义的属性和方法。

        • 信息传递:面向对象编程通过消息传递的方式实现对象之间的交互和通信。

    • 类和对象

      • 类与对象的概念

        • 什么是类

          • 简介

            • 在面向对象编程中,类 Class 是一种定义现实事物属性和方法的蓝图或模板。类描述了现实事物的特征 属性 和行为 方法。它定义了一类具有相似特征和行为的事物的通用结构和行为。

          • 类的组成

            • 类由属性和方法组成。属性是类的特征,用于描述类的状态。方法是定义在类中的函数,用于描述类的行为和操作。通过使用类,我们可以创建多个具有相同属性和方法的对象。类中的属性和方法是相对独立的,每个对象都有自己的属性副本,但共享类中的方法。

        • 什么是对象

          • 简介

            • 在面向对象编程中,对象(Object)是类的一个实例。对象是具体存在的,具有状态和行为的实体。可以把类看作是对象的模板或蓝图,描述了对象应该具有的属性和方法。当我们通过类创建一个具体的实例时,这个实例就是一个对象。

          • 特征

            • 状态:对象的状态由它的属性决定,属性表示了对象的特点和特征。例如,一个人对象的状态可以包括姓名、年龄、性别等属性,这些属性的值可以根据对象的实际情况而不同。

            • 行为:对象的行为由它的方法决定,方法表示了对象能够执行的操作和行为。例如,一个人对象的行为可以包括走路、说话、工作等方法,通过调用这些方法可以让对象执行相应的行为。

        • 总结

          • 对象是类的实例,可以根据类的定义创建多个对象。每个对象都有自己的属性值,在相同的类下,不同的对象可以具有不同的状态和行为。

          • 通过对象,我们可以对数据进行封装和操作,通过对象之间的交互和消息传递,实现程序的逻辑和功能。

          • 对象是具体的实体,具有属性和方法。它是类的一个实例,通过类定义可以创建多个对象。

      • 类的定义

        • python中使用class关键字来创建一个类,class之后为类的名称,python中所有类都是由根类(object)类派生而来。

        • 格式:class 类名: pass # 或 class 类名(object): pass

          image

           

      • 实例对象

        • 一个类定义好了,还不能使用,类只是规定了该类型的数据具有什么特征和行为,而真正要去使用这些特征和行为,必须有一个真实的列表存在。实例对象本质上就是使用自定义类型去声明一个变量。

        • 格式

          • 实例对象名 = 类名()

            image

             

        • 实例对象调用类中的方法

          image

           

    • 实例属性

      • 动态绑定属性

        • Python 中的属性变量都是使用动态绑定的方式绑定到实例对象上的。

        • 格式:实例对象名.实例属性名

          image

           

        • 在使用动态绑定属性时,给哪个实例对象绑定的属性,哪个对象才会拥有属性变量,没有绑定的则没有。

          image

           

        • 动态绑定形式为对象添加属性,但是属性在实例对象之后添加的,所以这个属性只能在该绑定的对象上使用,其他未绑定的对象无法使用。

          image

           

    • 构造方法

      • 构造方法:"__init__(self)"方法

        • 简介

          • 构造方法__init__(self) 方法,来给实例对象初始化属性,在实例对象时自动调用。

        • 示例

          • 构造方法__init__(self)方法的使用

            image

             

      • 对象描述方法:"__str__(self)"方法

        • 简介

          • 构造方法__str__(self)方法,在实例对象后,如果直接打印对象,输出该对象的相关信息,发现实际输出的并不是想要的结果。而是该实例对象的类型和地址。如果想在输出实例对象时,按指定的格式输出,需要实现 __str__(self) 方法,该方法不接收除 self 以外的参数,self 参数自动传入,函数只能返回一个字符串。

        • 示例

          • 未使用构造方法__str__(self)方法时,实例对象的输出只会输出实例对象的类型与地址

            image

             

          • 使用构造方法__str__(self)方法时,就可以来自定义打印对象时显示的内容

            image

             

      • self

        • 简介

          • self 是一个特殊的关键字,用来表示当前被实例的对象,可以理解为人称代词我。通过 self 可以定义或访问实例对象的属性或方法

        • 格式

          • self.属性名 = 属性值

    • 练习:定义一个商品类,包含 商品名称 和 商品价格 两个属性,实现商品类的对象描述方法。定义一个购物车类,包含一个 商品列表属性 和 添加商品 及 显示所有商品两个方法。

      • 练习代码

        image

         

      • 运行结果

        image

         

    • 实例方法

      • 简介

        • 实例方法用来定义对象的行为。实例方法本质上就是定义在类中的函数。实例方法默认携带一个参数 self, 在程序执行时,由解释器自动传入调用该方法的实例对象,通过此参数,可以在当前实例方法中调用其它实例方法或属性。

      • 格式

        • def 方法名(self): pass # 或 def 方法名(self,参数1,参数2...): pass

      • 示例代码

        • 代码

          image

           

          • 对应运行结果

            image

             

    • 类属性

      • 简介

        • 在类中定属性时,属性名有 self 前缀的是实例属性,而在类中直接定义的属性即为类属性。类属性其实就是作用于类中的变量

      • 特征

        • 在类中直接定义的变量为类属性

        • 在方法中使用类属性时,需要使用类名做为前缀,即:类名.类属性名

        • 在类的外部可以通过类名或实例对象名访问类属性

        • 所有的实例对象名共享一个类属性

        • 实例对象只能获取类属性的值,不能直接进行修改,只能通过方法进行修改或通过类名.类属性名来修改类属性值。

      • 示例代码

        • 代码1

          image

           

          • 运行结果

            image

             

        • 代码2

          image

          • 运行结果2

            image

             

    • 类方法

      • 类方法的定义

        • 类方法在定义时,需要使用 @classmethod 装饰器进行修饰,来定义类方法。而类方法的默认参数为 cls, 该参数也是在使用时,由解释器自动传入的,但传入的对象不是实例对象,而是类对象。

          image

           

      • 类方法的使用

        • 通过类名.类方法名来使用类方法

          image

           

      • 类方法的作用

        • 一般类方法用来封装工具类使用,将一些复杂的代码逻辑封装成类方法,由类名直接调用,不需要实例对象,比如时间处理,网络请求处理等。

      • 注意

        • 如果类中既定义了实例属性,又定义了类方法,那么在类方法中是不能使用实例属性的,因为在使用类方法的过程中,实例对象不存在,所以不能使用实例属性。

      • 封装一个日期时间获取的工具类

        • 代码

          image

           

          • 运行结果

            image

             

    • 练习:创建一个 Python 类,包含以下内容: 1、一个类属性,表示该类的计数器(如创建的对象数量)。 2、一个类方法,用于访问和更新类属性。 3、使用类方法实现对类属性的修改和访问。 4、创建几个类对象,测试类属性和类方法的功能。

      • 练习代码

        image

         

      • 运行结果

        image

         

    • 静态方法

      • 定义

        • 静态方法在定义时,需要使用 @staticmethod 装饰器进行装饰,与类方法不同的是,静态方法没有默认参数。静态方法和普通的函数本质上是一样的,只是定义在了类中。

          image

           

      • 使用

        • 直接使用类名.静态方法名来进行调用

          image

           

        • 使用对象.静态方法名进行调用

          image

           

posted @ 2026-05-24 20:59  风致﹏  阅读(7)  评论(0)    收藏  举报