python面向对象优点_Python面向对象简介

编程语言不断涌现,不同的方法也不断涌现。面向对象的编程就是这样一种方法,在过去的几年中变得非常流行。

本章讲述了Python编程语言的特性,使其成为一种面向对象的编程语言。

编程语言规划分类

Python可以在面向对象编程方法论下进行表征。 下图显示了各种编程语言的特性。 观察使其面向对象的Python特性。

编程范式过程程序,主要有 - C, C++, C#, Objective-C, java, Go

脚本,主要有 - CoffeeScript, JavaScript, Python, Perl, Php, Ruby

函数式,主要有 - Clojure, Eralang, Haskell, Scala

编译类静态,主要有 - C, C++, C#, Objective-C, java, Go, Haskell, Scala

动态,主要有 - CoffeeScript, JavaScript, Python, Perl, Php, Ruby, Clojure, - 类型类

强类型,主要有 - C#, java, Go, Python, Ruby, Clojure, Erlang, Haskell, Scala

弱类型,主要有 - C, C++, C#, Objective-C, CoffeeScript, JavaScript, Perl, Php

内存类托管,其它

非托管,主要有 - C, C++, C#, Objective-C

什么是面向对象编程?

面向对象意味着面向对象。 换句话说,它意味着功能上针对建模对象。 这是用于通过数据和行为描述一系列交互对象来为复杂系统建模的众多技术之一。

Python是面向对象编程(OOP),是一种编程方式,专注于使用对象和类来设计和构建应用程序。面向对象编程(OOP)的主要支柱是继承,多态,抽象和封装。

面向对象分析(OOA)是检查问题,系统或任务并识别它们之间的对象和相互作用的过程。

为什么选择面向对象编程?

Python是用面向对象的方法设计的。 OOP提供以下优点 -

提供清晰的程序结构,可以轻松映射真实世界的问题及其解决方案。

便于维护和修改现有的代码。

由于每个对象都是独立存在的,因此可以轻松添加新功能而不会打扰现有对象,从而增强了程序的模块化。

为代码库提供了一个很好的框架,供程序员轻松修改和修改提供的组件。

赋予代码可重用性

程序与面向对象编程

基于程序的编程源于基于功能/过程/例程概念的结构编程。 在面向程序的编程中访问和更改数据很容易。 另一方面,面向对象编程(Object Oriented Programming,OOP)允许将问题分解成多个称为对象的单元,然后在这些对象周围构建数据和函数。 它比过程或功能更强调数据。 在OOP中,数据也是隐藏的,不能被外部程序访问。

下图中的表格显示了POP和OOP方法的主要区别。

程序化编程(POP)与程序化编程(POP)的区别。 面向对象编程(OOP)。

序号/项

程序化编程

面向对象编程

基于

整个焦点集中在数据和函数上

基于真实世界的场景。整个程序划分为称为对象的小部分

可重用性

有限的代码重用

代码重用性高

途径

自上而下的方法

面向对象的设计

访问说明符

没有

public, private 以及 protected

数据移动

数据可以从功能中自由移动到系统中的功能

在Oops中,数据可以通过成员函数进行移动和相互通信

数据访问

大多数功能使用全局数据进行共享,可以从系统中的功能自由访问

数据不能在方法之间自由移动,它可以保存在公共或私人的位置,这样就可以控制数据的访问

数据隐藏

在流行中,隐藏数据的方式非常特殊,所以安全性稍差

它提供数据隐藏,更安全

重载

不可能

函数和运算符重载

示例语言

C, VB, Fortran, Pascal

C++, Python, Java, C#

抽象化

在过程级别使用抽象

在类和对象级别使用抽象

面向对象编程原理

面向对象编程(Object Oriented Programming,OOP)是基于对象而不是动作的概念,以及数据而不是逻辑。 想要使编程语言成为面向对象,它应该有一种机制来支持类和对象的使用,以及基本的面向对象原则和概念的实现和使用,即继承,抽象,封装和多态。

100100600_52224.jpg

下面简单了解面向对象编程的各个支柱 -

封装

该属性隐藏了不必要的细节,并使管理程序结构变得更加容易。 每个对象的实现和状态都隐藏在明确定义的边界之后,并为它们提供了一个干净而简单的界面。 实现这一目标的一种方法是将数据保密。

继承

继承也称为泛化,它允许我们捕获类和对象之间的层次关系。 例如,“水果”是“橙色”的泛化。 从代码重用的角度来看,继承非常有用。

抽象化

这个属性允许我们隐藏细节,只显示概念或对象的基本特征。 例如,驾驶滑板车的人知道在按喇叭时发出声音,但不知道如何在按下喇叭时实际产生应该是什么样的声音。

多态性

多态性意味着许多形式。 也就是说,某件事或行为是以不同的形式或方式呈现的。 多态的一个很好的例子是类中的构造函数重载。

Python面向对象

Python编程的核心是对象和OOP,但是您不需要通过将代码组织到类中来限制自己使用OOP。 OOP增加了Python的整个设计理念,并鼓励一种干净而实用的编程方式。 面向对象还可以编写更大更复杂的程序。

模块与类和对象

模块就像“字典”,在使用模块时,请注意以下几点 -

Python模块是封装可重用代码的包。

模块存储在一个有__init__.py文件的文件夹中。

模块包含功能和类。

模块使用import关键字导入。

字典是一个键值对。 这意味着如果有一个关键的EmployeID字典,如果想检索它,那么需要使用下面的代码行 -

employee = {"EmployeID": "Employee Unique Identity!"}

print (employee ['EmployeID'])

可通过使用以下过程来处理模块 -

模块是一个包含一些函数或变量的Python文件。

导入需要的文件。

现在,可以使用.(点)运算符访问该模块中的函数或变量。

考虑有一个名为employee.py的模块,其中包含一个名为employee的函数。 该函数的代码如下所示 -

# this goes in employee.py

def EmployeID():

print ("Employee Unique Identity!")

现在导入模块,然后访问函数EmployeID -

import employee

employee.EmployeID()

可以在其中插入名为Age的变量,如下所示 -

def EmployeID():

print ("Employee Unique Identity!")

# just a variable

Age = "Employee age is **"

现在,按照以下方式访问该变量 -

import employee

employee.EmployeID()

print(employee.Age)

现在,我们来比较一下字典 -

Employee['EmployeID'] # get EmployeID from employee

Employee.employeID() # get employeID from the module

Employee.Age # get access to variable

请注意,Python中有常见的模式 -

以一个key = value风格的容器

通过键的名称获取某些内容

将模块与字典进行比较时,两者都是相似的,除了以下内容 -

在字典的情况下,键是一个字符串,语法是[key]。

在模块的情况下,键是一个标识符,语法是.key。

类就像模块

模块是一个专门的字典,可以存储Python代码,所以你可以用.操作符来获得它。 类是一种对函数和数据进行分组并将其放置在容器中的方式,以便您可以使用.操作符访问它们。

如果要创建一个类似于员工模块的类,则可以使用以下代码执行此操作 -

class employee(object):

def __init__(self):

self. Age = “Employee Age is ##”

def EmployeID(self):

print (“This is just employee unique identity”)

注 - 类比模块更受欢迎,因为它可以按原样重用它们,且不会受到太多干扰。 使用模块时,整个程序只有一个。

对象就像小型的模块

一个类就像一个迷你版本的模块,可以用类似的方式导入类,就像使用类实例一样。 请注意,当实例化一个类时,会得到一个对象。

您可以实例化一个对象,类似于像函数一样调用一个类,如图所示 -

this_obj = employee() # Instantiatethis_obj.EmployeID() # get EmployeId from the class

print(this_obj.Age) # get variable Age

可以通过以下三种方式中的任何一种来执行此操作 -

# dictionary style

Employee['EmployeID']

# module style

Employee.EmployeID()

Print(employee.Age)

# Class style

this_obj = employee()

this_obj.employeID()

Print(this_obj.Age)

¥ 我要打赏

纠错/补充

收藏

上一篇:

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值