深入理解一下Python中的面向对象编程

这篇具有很好参考价值的文章主要介绍了深入理解一下Python中的面向对象编程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 

Part1

如何面向“对象”

网上关于Java和**C++**的面向对象编程相关介绍的博客文章已经很多了,那我为什么还写呢?因为,人生苦短,刚好我是学Python的...

今天,我们就来走进面向对象编程的理想国——深入理解一下Python中的面向对象编程(Object-Oriented Programming,OOP)。

“日子一天一天过 我们会慢慢长大,我不管你懂不懂我在写什么...时光匆匆匆匆流走,也也也不回头...”

 

Part2

程序设计之面向对象编程

深入理解一下Python中的面向对象编程

 文章来源地址https://www.toymoban.com/news/detail-471884.html

1 为什么需要程序设计?

在建筑行业,建筑师一般不会想要为一幢100层的大楼添加一个地下室,因为这样做无疑是成本过高,甚至有可能会失败。令人吃惊的是,在我们的软件开发行业中,当用户提出类似的改动时,都不会去多想。相反,老板或者产品经理可能会说这是一个简单的编程问题。(哈哈,这里无意中伤程序员与产品经理...)

但是,软件本质上是复杂的,随着项目的迭代,复杂性往往超出了人类智能的范围。

 

2 是否存在“最好的”设计?

在每一种工程实践中,设计都是一种训练有素的方法。不管是函数式编程、泛型编程、并发编程、面向过程基于对象面向对象等的程序设计,我们通过设计方法来创造某个问题的解决方案,从而提供时间需求的途径。

那么,是否存在“最好的”设计方法?

这个问题可能没有绝对的答案,但《没有“银弹”》告诉我们:没有单纯的技术或管理上的进步可以万无一失地让软件工程从需求得到一个复杂系统的实现。所以,面向对象也不是解决软件开发中所有问题的最后的“银弹”,如今很多高级编程语言提供了多种编程设计范式,Python也不例外。

 

3 为什么面向对象编程?

类是面向对象程序编程的主要工具,我们用它来定义新种类的方式,它在程序领域中反映了现实中的对象。而什么是面向对象编程呢?

面向对象编程是一种实现的方法,在这种方法中,程序被组织成许多组相互协作的对象,每个对象代表某个类的一个实例,而类则属于一个通过继承关系形成的层次结构。

来看一下概念中的三个要点:

  1. 利用对象作为程序的基本单元,而不是算法

  2. 每一个对象都是某个类的一个实例

  3. 类和类之间可以通过继承关系联系在一起

满足这三点才是叫面向对象的程序。我们用一个简单的例子来模拟一下

接着,我们先了解一下面向对象的三个核心概念:

1.  继承

通俗理解,“儿子从父亲那继承下来的东西”。如果在一个类的基础上创建新的有类,会将父类的属性和方法直接继承下来,从而减少重复代码的编写。提供继承信息(财产)的我们称为父类、或者基类、超类;得到继承信息的我们称为子类、或派生类或衍生类。

2.  多态

字面意思,“多种形态”,接口的不同实现方式即为多态。通过多态,子类可以扩展父类的能力,或者覆写父类的操作。

3.  封装

我对封装的理解,就像一个具有某些功能的黑箱子,隐藏一切可以隐藏的实现细节,然后对外提供简单的编程接口。

面向对象编程提供了一种有效的编程方式,利用这种方式,我们将代码冗余程度降到最低。因此,我们可以通过定制已有的代码来编写新的程序而不是在原处进行修改。

 

Part3

Python中的一切皆对象

在Python中,OOP是完全不是必须的,在初学阶段也不需要使用类,利用函数结构也能写出很多好用的脚本,完成很多有趣的编程。但是Python OOP也非常有意思,不信你跟我一起学学。

Java虽然也是面向对象编程的语言,但是血统没有Python纯正。比如Java的八种基本数据类型之一int,在持久化的时候,就需要包装成Integer类对象。

与Java相比,Python的面向对象更彻底。学过Python的朋友可能知道,在Python中,把我们所有能看到的都变成对象——数字、字符串、元组、列表、字典、函数、方法、类、模块、包括你的代码。

怎么理解这个过程呢?Python 中的一切都可以赋值给变量或者作为参数传递给函数,我们来看一下代码:

a = 3
b = a
print(a)  # 打印:3
print(b)  # 打印:3

def all_is_object():
    print("Learing Python OOP")
    
all_is_well = all_is_object
all_is_object() # 打印:Learing Python OOP
all_is_well()  # 打印:Learing Python OOP

class Person():
    def __init__(self, name):
        print("姓名:", name)
        
A = Person
xiaoyu = A("小宇")  # 姓名: 小宇

 

Part4

Python对象的三个特性

Python 的所有对象都有三个特性:身份(id)类型(type)值(value)

  • 身份(id):每个对象都有一个唯一的身份标识自己,任何对象的身份都可以使用内建函数 id() 来得到,可以简单的认为这个值是该对象的内存地址。

a = 3
b = a
id(a)
id(b)
id(test_list)
  • 类型(type):对象的类型决定了对象可以保存什么类型的值,有哪些属性和方法,可以进行哪些操作,遵循怎样的规则。可以使用内建函数 type() 来查看对象的类型。

a = 3
b = a
print(type(a))  # <class 'int'>
print(type(int))  # <class 'type'>

test_list = [1, 2, 3, 4, 5]
print(type(test_list))  # <class 'list'>
print(type(list))  # <class 'type'>

test_tuple = (1, 2, 3, 4, 5)
print(type(test_tuple))    # <class 'tuple'>
print(type(tuple))    # <class 'type'>

test_str = "I love python"
print(type(test_str))  # <class 'str'>
print(type(str))  # <class 'type'>
  • 值(value):对象所表示的数据

print(a)  # 3
print(test_list)  # [1, 2, 3, 4, 5]
print(test_str)    # I love python

"身份"、"类型"和"值"在所有对象创建时被赋值。只要对象存在,这三个特性就一直存在。

 

Part5

总结

事实上,我们学习的软件框架(framework)就是父类的集合,框架就是把常见的程序设计任务实现成类,我们所需要做的就是通过编写自己的子类,组合和定制已调试过的代码。此外,将常见的OOP结构归类,就是我们的设计模式(design pattern),来协助解决设计中的问题。

这些软件框架可能提供一些数据库接口、测试协议、GUI工具包等

 

欢迎点赞收藏转发🙏🙏

 

 

到了这里,关于深入理解一下Python中的面向对象编程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 再谈编程范式(3):理解面向过程/面向对象/函数式编程的精髓

    面向过程是随着VB一起来到我的世界,那个时候会的非常有限,感觉能把程序写出来自己就非常棒了,VB是做那种可视化界面,在工具栏拖个框框放到面板上,然后就在各个事件上写完整的逻辑,什么封装,抽象,继承一概不懂,就有一种一个方法把实现过程需要的逻辑都罗列

    2024年01月20日
    浏览(42)
  • 深入解析 Java 面向对象编程与类属性应用

    面向对象编程 (OOP) 是一种编程范式,它将程序组织成对象。对象包含数据和操作数据的方法。 OOP 的优势: 更快、更易于执行 提供清晰的结构 代码更易于维护、修改和调试 提高代码重用性 减少开发时间 类和对象 类 是对象的模板,它定义了对象的属性和方法。 对象 是类的

    2024年02月20日
    浏览(46)
  • 【深入浅出C#】章节 5: 高级面向对象编程:泛型编程和集合类型

    高级面向对象编程是在基础面向对象编程的基础上进一步深入和拓展的一种编程范式。它强调封装、继承和多态的概念,并引入了泛型编程和集合类型等高级特性。高级面向对象编程提供了更灵活、可扩展和可复用的代码结构,能够帮助开发者构建更复杂、更高效的应用程序

    2024年02月16日
    浏览(61)
  • 【深入浅出C#】章节 4: 面向对象编程基础:封装、继承和多态

    封装、继承和多态是面向对象编程中的核心概念,它们对于构建灵活、可扩展和可维护的软件系统至关重要。 封装(Encapsulation)通过将数据和相关操作封装在一个类中,隐藏内部实现细节,并提供公共接口来与外部进行交互。封装有助于保护数据的完整性和安全性,同时提

    2024年02月10日
    浏览(56)
  • ES6的面向对象编程以及ES6中的类和对象

    1、面向对象 (1)是一种开发思想,并不是具体的一种技术 (2)一切事物均为对象,在项目中主要是对象的分工协作 2、对象的特征 (1)对象是属性和行为的结合体 (2)属性:体现对象的静态特征、 (3)行为:体现对象的动态特征(具体体现为函数/方法) 3、面向对象的三

    2024年02月09日
    浏览(40)
  • python 面向对象编程(2)

    前面我们介绍了 python 类和对象以及继承、私有权限,那么今天我们将来介绍 python面向对象 剩下的两大特性封装、多态,以及如何访问、修改类属性、类方法和静态方法的介绍。🚗🚗🚗 Python中的封装是一种面向对象编程的概念,它将数据和操作这些数据的方法封装到一个

    2024年02月16日
    浏览(55)
  • Python面向对象编程

    本文带领大家过一遍菜鸟学Python的面向对象的部分 类(Class):  用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 类变量: 类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通

    2023年04月27日
    浏览(45)
  • python 面向对象编程

    大家好,前面我们学习了 python 的基础用法,那么从今天开始,我们将学习 python 的面向对象编程,那么什么叫做面向对象的编程呢? 面向对象编程是一种编程范式,它将数据和操作数据的方法封装在对象中,并通过对象之间的交互来实现程序的设计和实现。 在面向对象编程

    2024年02月13日
    浏览(49)
  • 5 Python的面向对象编程

    概述         在上一节,我们介绍了Python的函数,包括:函数的定义、函数的调用、参数的传递、lambda函数等内容。在本节中,我们将介绍Python的面向对象编程。面向对象编程(Object-Oriented Programming, 即OOP)是一种编程范型,它以对象为基础,将数据和操作封装在一个类(

    2024年02月11日
    浏览(38)
  • 【python】08.面向对象编程基础

    活在当下的程序员应该都听过\\\"面向对象编程\\\"一词,也经常有人问能不能用一句话解释下什么是\\\"面向对象编程\\\",我们先来看看比较正式的说法。 \\\"把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为类(class),通过类的封装(encapsulation)隐藏内部

    2024年01月20日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包