Pyton面向对象

面向过程和面向对象

首先需要明确面向过程和面向对象是两种不同的编程思想,而不是新的技术栈。

面向过程编程

面向过程是一种编程范式,它将程序设计看作一系列按照特定顺序执行的操作或函数调用。在面向过程编程中,程序主要由一系列的函数或过程组成,这些函数按照一定的顺序依次执行,以完成特定的任务。

面向过程编程的特点包括:

  1. 以过程为中心: 程序的主要结构是一系列的函数或过程,它们以特定的顺序执行。

  2. 数据和操作分离: 数据和操作(或函数)分开管理。数据通常是以简单的数据结构(如数组、结构体,列表,字典等)来组织,而操作则由一系列的函数来执行。

  3. 强调线性流程: 程序的执行流程通常是线性的,即从一个步骤到下一个步骤,依次执行。

  4. 适合简单任务: 面向过程编程通常适用于较为简单、直接的任务,不涉及复杂的数据交互和状态管理。

  5. 相对低级: 面向过程编程通常比面向对象编程更接近计算机硬件和底层操作,因此在一些性能敏感的场景中可能更具优势。

  6. 可读性较差: 面向过程的代码可能会变得比较冗长,特别是在处理复杂任务时,代码可能会难以维护和理解。

示例代码(使用C语言):

def add(a, b):
    return a + b

x = 5
y = 3
result = add(x, y)  # 调用add函数
print(f"{x} + {y} = {result}")

}

在上面的例子中,add 函数是一个典型的面向过程的例子。它接受两个参数 ab,然后返回它们的和。

总的来说,面向过程编程是一种简单直接的编程范式,适合于一些不需要复杂数据交互和状态管理的任务。然而,在处理大规模、复杂的程序时,面向对象编程等其他范式可能更具优势。

在此之前写的程序都是面向过程编程

面向对象编程

面向对象编程(Object-Oriented Programming,OOP)是一种常用的编程范式,它将程序中的数据和行为封装成对象,使得代码更具有组织性、可维护性和复用性。

以下是面向对象编程的一些基本概念和特点:

  1. 类和对象

    • 类(Class) 是一个抽象的概念,它代表一类事物的共性特征,包括它们的属性和行为。
    • 对象(Object) 是类的一个具体实例,它具有该类所定义的属性和行为。
  2. 封装(Encapsulation)

    • 封装是一种将数据和操作打包在一起的机制,目的是保护数据,防止它被不恰当地访问或修改。
    • 通过封装,我们可以将数据的实现细节隐藏起来,只提供公共的接口供外部访问。这样可以降低系统的耦合度,使得修改某一部分的实现不会影响到其他部分。
  3. 继承(Inheritance)

    • 继承是一种机制,允许一个类(称为子类)继承另一个类(称为父类)的属性和行为。
    • 子类可以继承父类的公共成员,并且可以在继承的基础上进行扩展或者修改。

    例如,如果我们有一个 Animal 类,其中有一个方法叫做 eat(),我们可以创建一个子类 Dog,它继承了 Animal 类,但可能会添加自己的方法如 bark()

  4. 多态(Polymorphism)

    • 多态性允许不同的类实现相同的方法名,但具体执行的行为可能不同。
    • 这使得我们可以使用通用的接口来处理不同类的对象,而不需要关心它们的具体类型。

    举例来说,我们可以定义一个统一的 speak() 方法,然后让不同的动物类(如狗、猫)实现自己特定的 speak() 行为。

  5. 抽象类和接口

    • 抽象类是一种不能被实例化的类,它只能作为其他类的基类,用于定义一些共性的属性和方法。
    • 接口是一种特殊的抽象类,它只包含方法的签名而不包含实际的实现。

    抽象类和接口都用于描述对象的共性特征,但接口更加抽象,通常用于定义规范,而不涉及具体的实现。

以上是面向对象编程的核心概念,它们提供了一种强大的方式来组织和管理复杂的程序。通过合理地应用这些概念,我们可以写出模块化、可扩展、易维护的代码,从而提高程序的质量和可重用性。

面向对象编程的优点包括:

  • 代码复用性:通过继承和组合,可以更轻松地重用现有的代码,减少了代码的重复编写。
  • 可维护性:封装使得对象的内部实现对外部用户透明,可以更容易地对代码进行维护和更新。
  • 模块化:将代码模块化成类和对象,使得程序结构更清晰,易于组织和管理。
  • 拓展性:通过继承和多态,可以在不修改已有代码的情况下,拓展程序的功能。

总的来说,面向对象编程是一种强大的编程范式,它在现代软件开发中得到了广泛应用。许多流行的编程语言,如Java、Python、C++等,都支持面向对象编程。

Python中的面向对象编程

在Python中想要通过面向对象去实现某个或某些功能时需要2步:

  • 定义类,在类中定义方法,在方法中去实现具体的功能。

  • 实例化类并的个一个对象,通过对象去调用并执行方法。

示例如下:

# 创建类并在类中定义方法
class Message:
	def send_email(self, email, content):
		data = "给{}发邮件,内容是:{}".format(email,content)
		print(data)
	
	def send_wechat(self, vid, content):
		data = "给{}发邮件,内容是:{}".format(vid,content)
		print(data)


msg_object = Message()  # 实例化了一个对象msg_object
msg_object.send_email("antony@gmail.com","用户成功注册")
msg_object.send_wechat("张三","法外狂徒")

注意:
1.类名称建议采用大驼峰式命名;

2.py3之后默认类都继承object;

3.在类种编写的函数称为方法;

4.每个方法的第一个参数是self。


此时能明确感受到类是对方法的归类:即相同类型的函数划分到一个类中。

到现在为止面向对象给人的感觉就是很鸡肋,甚至不如直接使用函数编写。那么接着往下看:

对象和self

在每个类中都可以定义个特殊的:__init__ 初始化方法 ,在实例化类创建对象时自动执行,即:对象=类()

class Message:

    def __init__(self, content):
        self.data = content

    def send_email(self, email):
        data = "给{}发邮件,内容是:{}".format(email, self.data)
        print(data)

    def send_wechat(self, vid):
        data = "给{}发微信,内容是:{}".format(vid, self.data)
        print(data)

# 对象 = 类名() # 自动执行类中的 __init__ 方法。

# 1. 根据类型创建一个对象,内存的一块 区域 。
# 2. 执行__init__方法,模块会将创建的那块区域的内存地址当self参数传递进去。    往区域中(data="注册成功")
msg_object = Message("法外狂徒")

msg_object.send_email("antony@gmail.com")
msg_object.send_wechat("张三")

通过上述示例:

  • 对象,让我们可以在它的内部先封装一部分数据,以后想要使用时,再去里面获取。

  • self,类中的方法需要由这个类的对象来触发并执行( 对象.方法名 ),且在执行时会自动将对象当做参数传递给self,以供方法中获取对象中已封装的值。

注意:除了self默认参数以外,方法中的参数的定义和执行与函数是相同。

  • 面向对象的思想:将一些数据封装到对象中,在执行方法时,再去对象中获取。

  • 函数式的思想:函数内部需要的数据均通过参数的形式传递。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值