如何理解python面向对象编程

类是面向对象程序设计的一部分。面向对象程序设计或者简称为 OOP 致力于创建可重用代码块称之为类。当你想在你的程序中使用类时,你会从类中创建一个对象,这也是面向对象一词的由来。Python 并不总是面向对象的,但是你会在你的项目中用到对象。为了理解类,你需要理解面向对象的一些基础术语。

常用术语

class:类。类是代码块的主体,其中定义了建立的模型的属性和行为。这个模型可以来自于真实世界,也可以是虚拟游戏等。

attribute:属性。是一系列信息的集合。在类中,一个属性通常是一个变量。

behavior:行为。行为是定义在类中,组成方法的部分。也即是定义在类中函数的一部分。

method:方法。类中的函数,由 behavior 组成。

object:对象。对象是类的实例。一个对象中包含所有类中属性的值。你可以为一个类创建任意数量的对象。

近距离观察 Rocket 类

我们已经了解到一些类的基本术语,让我们回头再分析一下上节提到的 Rocket 类。

__init__() 方法

定义一个初始代码块,如下所示:

class Rocket():
  # Rocket simulates a rocket ship for a game,
  # or a physics simulation.

  def __init__(self):
    # Each rocket has an (x,y) position.
    self.x = 0
    self.y = 0

第一行展示了类是如何创建的。关键字 class 告诉 Python 准备定义一个类。类名的命名规则和变量的相同,但是 Python 中有一个约定好的规则,类名必须是驼峰式的。也即每个单词的开头必须是大写的,不允许下划线的出现。类名后紧跟一对圆括号,目前为止圆括号里都是空的,接下来的学习中,其中可能会包含一个类。这个类是新类基于的类。

前后都有两个下划线的函数是内置在 Python 中的有特殊用途的函数。__init__() 函数就是一个特殊的函数。当创建一个类的对象时,它会自动执行。我们可以称之为初始化函数,在对象使用之前初始化一些必要的属性。在这个例子中,__init__() 函数初始化了 x 和 y 属性。

关键字 self 可能会有些难以理解。单词 "self" 指向当前的对象。当你创建一个类时,它可以访问到类中的任意指定属性。基本上,类中所有的函数都需要 self 对象作为第一个参数,因此它们就可以访问类中的属性。

现在,让我们看看类中的方法吧!

一个简单的方法

下述代码在 Rocket 类中定义了一个方法。

class Rocket():
  # Rocket simulates a rocket ship for a game,
  # or a physics simulation.

  def __init__(self):
    # Each rocket has an (x,y) position.
    self.x = 0
    self.y = 0

  def move_up(self):
    # Increment the y-position of the rocket.
    self.y += 1

方法就是类中的函数。因此你可以在方法中做任何函数能做的事。

默认情况下,每个函数都需要接受一个参数:self 。它是对调用这个方法的对象的引用。self 参数能让你访问到调用对象的属性。在这个例子中,self 用来访问 Rocket 对象的 y 属性。这个方法被调用一次,对象的 y 属性就增加1。为了更近一步了解方法的运行过程,仔细阅读下述代码,并观察它们的输出。

class Rocket():
  # Rocket simulates a rocket ship for a game,
  # or a physics simulation.

  def __init__(self):
    # Each rocket has an (x,y) position.
    self.x = 0
    self.y = 0

  def move_up(self):
    # Increment the y-position of the rocket.
    self.y += 1

# Create a Rocket object, and have it start to move up.
my_rocket = Rocket()
print("Rocket altitude:", my_rocket.y)

my_rocket.move_up()
print("Rocket altitude:", my_rocket.y)

创建多个对象

面向对象编程一个重要目标是创建可重用代码。一旦你写好了类,就能创建任意数量的对象。通常,类被放进一个单独的文件中,在需要的时候导入程序中。因此你可以创建一个类库,在不同的程序中重复使用这些类。

在一个类上创建多个对象,示例如下:

class Rocket():
     # Rocket simulates a rocket ship for a game,# Rocket
  # or a physics simulation.

  def __init__(self):
    # Each rocket has an (x,y) position.
    self.x = 0
    self.y = 0

  def move_up(self):
    # Increment the y-position of the rocket.
    self.y += 1

# Create a fleet of 5 rockets, and store them in a list.
my_rockets = []
for x in range(0,5):
  new_rocket = Rocket()
  my_rockets.append(new_rocket)

# Show that each rocket is a separate object.
for rocket in my_rockets:
  print(rocket)

内容扩展:

初识类和对象

python中一切皆为对象,类型的本质就是类,所以,不管你信不信,你已经使用了很长时间的类了

>>> dict #类型dict就是类dict
<class 'dict'>
>>> d=dict(name='eva') #实例化
>>> d.pop('name') #向d发一条消息,执行d的方法pop
'eva'

从上面的例子来看,字典就是一类数据结构,我一说字典你就知道是那个用{}表示,里面由k-v键值对的东西,它还具有一些增删改查的方法。但是我一说字典你能知道字典里具体存了哪些内容么?不能,所以我们说对于一个类来说,它具有相同的特征属性和方法。

而具体的{'name':'eva'}这个字典,它是一个字典,可以使用字典的所有方法,并且里面有了具体的值,它就是字典的一个对象。对象就是已经实实在在存在的某一个具体的个体。

再举一个其他的例子,通俗一点,比如你现在有一个动物园,你想描述这个动物园,那么动物园里的每一种动物就是一个类,老虎、天鹅、鳄鱼、熊。他们都有相同的属性,比如身高体重出生时间和品种,还有各种动作,比如鳄鱼会游泳,天鹅会飞,老虎会跑,熊会吃。

但是这些老虎熊啥的都不是具体的某一只,而是一类动物。虽然他们都有身高体重,但是你却没有办法确定这个值是多少。如果这个时候给你一只具体的老虎,而你还没死,那你就能给他量量身高称称体重,这些数值是不是就变成具体的了?那么具体的这一只老虎就是一个具体的实例,也是一个对象。不止这一只,其实每一只具体的老虎都有自己的身高体重,那么每一只老虎都是老虎类的一个对象。

到此这篇关于如何理解python面向对象编程的文章就介绍到这了,更多相关python面向对象编程详解内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python面向对象封装操作案例详解

    本文实例讲述了Python面向对象封装操作.分享给大家供大家参考,具体如下: 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 -- 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象,然后 让对象调用方法 对象方法的细节 都被 封装 在 类的内部 02. 小明爱跑步 需求 小明 体重 75.0 公斤 小明每次 跑步 会减肥 0.5 公斤 小明每次 吃东西 体重增加 1 公斤 提示:在 对象的方法内部,是可以 直接访问

  • Python面向对象之继承原理与用法案例分析

    本文实例讲述了Python面向对象之继承原理与用法.分享给大家供大家参考,具体如下: 目标 单继承 多继承 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 继承 实现代码的重用,相同的代码不需要重复的编写 多态 不同的对象调用相同的方法,产生不同的执行结果,增加代码的灵活度 01. 单继承 1.1 继承的概念.语法和特点 继承的概念:子类 拥有 父类 的所有 方法 和 属性 继承的语法 class 类名(父类名): pass 子类 继承自 父类,可以直接 享受

  • Python面向对象之私有属性和私有方法应用案例分析

    本文实例讲述了Python面向对象之私有属性和私有方法.分享给大家供大家参考,具体如下: 01. 应用场景及定义方式 应用场景 在实际开发中,对象 的 某些属性或方法 可能只希望 在对象的内部被使用,而 不希望在外部被访问到 私有属性 就是 对象 不希望公开的 属性 私有方法 就是 对象 不希望公开的 方法 定义方式 在 定义属性或方法时,在 属性名或者方法名前 增加 两个下划线,定义的就是 私有 属性或方法 class Women: def __init__(self, name): self

  • Python面向对象封装操作案例详解 II

    本文实例讲述了Python面向对象封装操作.分享给大家供大家参考,具体如下: 目标 士兵突击案例 身份运算符 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 -- 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象,然后 让对象调用方法 对象方法的细节 都被 封装 在 类的内部 一个对象的 属性 可以是 另外一个类创建的对象 01. 士兵突击 需求 士兵 许三多 有一把 AK47 士兵 可以 开火 枪 能够 发射 子弹 枪 装填 装填子弹 -- 增加子弹数量

  • Python面向对象之多态原理与用法案例分析

    本文实例讲述了Python面向对象之多态原理与用法.分享给大家供大家参考,具体如下: 目标 多态 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 定义类的准则 继承 实现代码的重用,相同的代码不需要重复的编写 设计类的技巧 子类针对自己特有的需求,编写特定的代码 多态 不同的 子类对象 调用相同的 父类方法,产生不同的执行结果 多态 可以 增加代码的灵活度 以 继承 和 重写父类方法 为前提 是调用方法的技巧,不会影响到类的内部设计 多态案例演练 需求 1.在

  • python面向对象之类属性和类方法案例分析

    本文实例讲述了python面向对象之类属性和类方法.分享给大家供大家参考,具体如下: 目标 类的结构 类属性和实例属性 类方法和静态方法 01. 类的结构 1.1 术语 -- 实例 使用面相对象开发,第 1 步 是设计 类 使用 类名() 创建对象,创建对象 的动作有两步: 在内存中为对象 分配空间 调用初始化方法 init 为 对象初始化 对象创建后,内存 中就有了一个对象的 实实在在 的存在 -- 实例 因此,通常也会把: 创建出来的 对象 叫做 类 的 实例 创建对象的 动作 叫做 实例化

  • 如何理解python面向对象编程

    类是面向对象程序设计的一部分.面向对象程序设计或者简称为 OOP 致力于创建可重用代码块称之为类.当你想在你的程序中使用类时,你会从类中创建一个对象,这也是面向对象一词的由来.Python 并不总是面向对象的,但是你会在你的项目中用到对象.为了理解类,你需要理解面向对象的一些基础术语. 常用术语 class:类.类是代码块的主体,其中定义了建立的模型的属性和行为.这个模型可以来自于真实世界,也可以是虚拟游戏等. attribute:属性.是一系列信息的集合.在类中,一个属性通常是一个变量. be

  • Python面向对象编程中的类和对象学习教程

    Python中一切都是对象.类提供了创建新类型对象的机制.这篇教程中,我们不谈类和面向对象的基本知识,而专注在更好地理解Python面向对象编程上.假设我们使用新风格的python类,它们继承自object父类. 定义类 class 语句可以定义一系列的属性.变量.方法,他们被该类的实例对象所共享.下面给出一个简单类定义: class Account(object): num_accounts = 0 def __init__(self, name, balance): self.name =

  • Python面向对象编程基础解析(二)

    Python最近挺火呀,比鹿晗薛之谦还要火,当然是在程序员之间.下面我们看看有关Python的相关内容. 上一篇文章我们已经介绍了部分Python面向对象编程基础的知识,大家可以参阅:Python面向对象编程基础解析(一),接下来,我们看看另一篇. 封装 1.为什么要封装? 封装就是要把数据属性和方法的具体实现细节隐藏起来,只提供一个接口.封装可以不用关心对象是如何构建的,其实在面向对象中,封装其实是最考验水平的 2.封装包括数据的封装和函数的封装,数据的封装是为了保护隐私,函数的封装是为了隔离

  • Python面向对象编程基础解析(一)

    1.什么是面向对象 面向对象(oop)是一种抽象的方法来理解这个世界,世间万物都可以抽象成一个对象,一切事物都是由对象构成的.应用在编程中,是一种开发程序的方法,它将对象作为程序的基本单元. 2.面向对象与面向过程的区别 我们之前已经介绍过面向过程了,面向过程的核心在'过程'二字,过程就是解决问题的步骤,面向过程的方法设计程序就像是在设计一条流水线,是一种机械式的思维方式 优点:复杂的问题简单化,流程化 缺点:扩展性差 主要应用场景有:Linux内核,git,以及http服务 面向对象的程序设计

  • 关于Python面向对象编程的知识点总结

    前言 如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python的面向对象编程. 接下来我们就来了解关于Python面向对象编程的知识点吧. 类与实例 类是对象的定义,而实例是"真正的实物",它存放了类中所定义的对象的具体信息. 类.属性和方法命名规范 类名通常由大写字母打头.这是标准惯例,可以帮助你识别类,特别是在实例化过程中(有时看起来像函数调用).还有,数据属性(变量或常量

  • Python 面向对象编程的三大特性之继承

    目录 Python  面向对象编程的三大特性之继承 一.继承 1.继承的实际栗子 2.继承的好处 3.继承的使用场景 4.继承有几种? 5.Python 中继承的简单语法 二.不使用继承.使用继承的区别 1.需求背景 2.不使用继承 2.使用继承 三.继承的传递性 1.什么是传递性 四.继承和抽象 1.继承的重点 Python  面向对象编程的三大特性之继承 一.继承 继承也是面向对象编程三大特性之一 继承是类与类的一种关系 定义一个新的 class 时,可以从某个现有的 class 继承 新的

  • Python面向对象编程之类的概念

    目录 1.面向对象基本概念 1.1 万物皆对象 1.2 面向对象编程 1.3 面向对象的特征 2.Python面向对象的术语 3.Python类的构建 3.1 类的基本构建 3.2 类的构造函数 3.3 类的属性 3.4 类的方法 1.面向对象基本概念 1.1 万物皆对象 Python语言的中所有数据类型都是对象.函数是对象.模块是对象 Python所有类都是继承最基础的类object Python语言中的数据类型的操作功能都是类方法的体现 1.2 面向对象编程 面向对象编程又叫OOP(Obje

  • Python面向对象编程之类的继承

    目录 1.对继承的理解 2.类继承的构建 3.Python中最基础的类 4.ython类的重载 4.1 属性重载 4.2 方法重载 5.类的多继承 1.对继承的理解 继承(Inheritance) :代码复用的高级抽象 继承是面向对象设计的精髓之一 实现了以类为单位的高级抽象级别代码复用 继承是新定义类能够几乎完全使用原有类属性与方法的过程 不管是基类还是派生类,只是一种继承说法,这都是普通的Python类 也可以按子类.父类和超类划分. 最基础的类是基类,经过一次继承得出派生类,还可以再一次继

  • Python面向对象编程之类的封装

    目录 1.封装的理解 2.私有类属性.公开类属性.私有实例属性和公开实例属性 2.1 公开类属性 2.2 私有类属性 2.3 公开实例属性 2.4 私有实例属性 2.5 私有属性不一定真的私有 3.私有方法和公开方法 4.类的保留属性 5.类的保留方法 1.封装的理解 封装(Encapsulation):属性和方法的抽象 属性的抽象:对类的属性(变量)进行定义.隔离和保护 分为私有属性和公开属性: 私有属性:只能在类内部访问 公开属性:可以通过类.对象名访问 可以选择公开或隐藏属性,隐藏属性的内

  • Python面向对象编程之类的运算

    目录 1.运算概念的理解 2.运算符的重载 2.1 算术运算符 2.2 比较运算符 2.3 成员运算 2.4 其他运算 3.Python类的多态 1.运算概念的理解 运算(Operation)是操作逻辑的抽象 运算体现一种操作逻辑,在广义角度来说任何程序都是一种运算 Python解释器通过保留方法预留了一批运算的接口,需要重载 保留方法一般对应运算符,Python中运算体现为运算符的重载 运算本质上体现了交互关系.包含关系和常规的操作关系 运算重载的限制 不能重载Python语言内置类型的运算符

随机推荐