开发手册 欢迎您!
软件开发者资料库

面向对象的Python - 简介

面向对象的Python简介 - 从基本到高级概念的简单易学的步骤学习面向对象的Python,包括简介,环境设置,数据结构,构件块,面向对象的快捷方式,继承和多态,Python设计模式,高级功能,文件和字符串,异常和异常类,对象序列化,Python库。

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

本章讨论了这些特性Python编程语言使其成为面向对象的编程语言.

语言编程分类方案

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

Langauage Classes类别Langauages
编程范式程序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,Erlang
类型类C#,java,Go,Python,Ruby, Clojure,Erlang,Haskell,Scala
C,C ++,C#,Objective-C,CoffeeScript,JavaScript,Perl,Php
记忆类托管其他
UnmanagedC,C ++,C#,Objective-C

什么是面向对象的编程?

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

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

面向对象分析(OOA)是检查问题,系统或任务以及识别它们之间的对象和交互的过程.

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

Python采用面向对象的方法设计. OOP提供以下优点和减号;

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

  • 便于维护和修改现有代码.

  • 增强程序模块化因为每个对象都是独立存在的,并且可以轻松添加新功能而不会干扰现有对象.

  • 为代码库提供了一个很好的框架,其中提供的组件可以很容易地进行调整由程序员修改.

  • 赋予代码可重用性

程序与面向对象的编程

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

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

程序导向编程(POP)与.面向对象编程(OOP).


面向过程的编程面向对象的编程
基于在Pop中,整个焦点都集中在数据和函数上糟糕的是基于真实世界的场景.整个程序被分成称为对象的小部分
可重用性有限代码重用代码重用
方法自上而下方法面向对象的设计
访问说明符没有任何公共,私有和受保护
数据移动数据可以在系统中从函数自由移动在Oops中,数据可以移动并与每个数据进行通信其他通过成员函数
数据访问在pop中,大多数函数使用全局数据进行共享,可以在系统中从函数到函数自由访问在Oops中,数据不能在一个方法之间自由移动,它可以保存在公共或私人中,这样我们就可以控制数据的访问了
数据隐藏在pop中,隐藏数据的特定方式,所以安全性稍差It提供数据隐藏,更加安全
重载不可能函数和运算符重载
示例 - 语言C,VB,Fortran,PascalC ++,Python,Java,C#
抽象在程序级别使用抽象在类和对象级别使用抽象

面向对象编程原理

面向对象编程(OOP)基于对象的概念而不是动作,而数据而不是逻辑.为了使编程语言面向对象,它应该有一个机制来实现类和对象的工作,以及基本的面向对象原则和概念的实现和使用,即继承,抽象,封装和多态./p> 哎呀

让我们了解面向对象编程的每个支柱简而言之;

封装

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

继承

继承(也称为泛化)允许我们捕获类之间的层级关系和对象.例如,"水果"是"橙色"的概括.从代码重用的角度来看,继承非常有用.

抽象

这个属性允许我们隐藏细节并只暴露概念的基本特征或对象.例如,驾驶摩托车的人知道在按下喇叭时会发出声音,但他不知道在按下喇叭时声音是如何产生的.

多态性

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

面向对象的Python

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

模块与类和对象

模块类似于"字典"

在处理模块时,请注意以下几点和减号;

  • Python模块是一个封装的包可重复使用的代码.

  • 模块位于一个文件夹中,上面有 __ init __.py 文件.

  • 模块包含函数和类.

  • 使用 import 关键字导入模块.

回想一下字典是键值对.这意味着如果你有一个带有键 EmployeID 的字典并且你想要检索它,那么你将不得不使用以下代码行和减号;

employee = {"EmployeID": "Employee Unique Identity!"}print (employee [‘EmployeID])

你必须使用以下过程处理模块 :

  • 模块是一个包含一些文件的Python文件其中的函数或变量.

  • 导入所需的文件.

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

考虑一个名为 employee.py 的模块,其中包含一个名为 employee 的函数.该函数的代码在下面给出 :

# this goes in employee.pydef EmployeID():   print ("Employee Unique Identity!")

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

import employeeemployee. EmployeID()

您可以在其中插入一个名为年龄的变量,如图所示 :

def EmployeID():   print ("Employee Unique Identity!")# just a variableAge = "Employee age is **"

现在,以下列方式访问该变量 :

 import employee  employee.EmployeID() print(employee.Age)

现在,让我们将它与字典和减号进行比较;

Employee[‘EmployeID’] # get EmployeID from employeeEmployee.employeID() # get employeID from the moduleEmployee.Age # get access to variable

请注意,Python中有共同模式 :

  • 拿一个 key = value 样式容器

  • 从中获取一些东西用钥匙的名字

Wh比较模块和字典,两者都是相似的,除了以下 :

  • 对于模块,键是标识符,语法是.key.

类类似于模块

Module是一个专门的字典,可以存储Python代码,因此您可以使用'.'运算符来访问它.类是一种对函数和数据进行分组并将它们放在容器中的方法,因此您可以使用'.'操作符访问它们.

如果必须创建类似的类对于员工模块,您可以使用以下代码 :

class employee(object):   def __init__(self):      self. Age = "Employee Age is ##"   def EmployeID(self):      print ("This is just employee unique identity")

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

对象就像迷你进口

一个类就像一个迷你-module 您可以使用名为 instantiate 的概念,以与类相似的方式导入.请注意,当您实例化一个类时,您会得到一个对象.

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

this_obj = employee() # Instantiatethis_obj.EmployeID() # get EmployeId from the classprint(this_obj.Age) # get variable Age

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

# dictionary styleEmployee[‘EmployeID’]# module styleEmployee.EmployeID()Print(employee.Age)# Class stylethis_obj = employee()this_obj.employeID()Print(this_obj.Age)