前言:

是自己在学习python进阶IO学习视频的时候的理解和笔记,因为很多都是本菜鸟学习时候的自己的理解,有可能理解有误。

Content:

- 抽象的概念和面向对象的概念?想要大概了解python的面向对象需要注意哪些知识点?

- 由type、object、class来了解python对象的机制和特性

- python提供了哪些常用的内置类型?(被抽象成类)

一  抽象和面向对象和类

在python基础教程书中,有一章名字是抽象,在学习的时候,我还曾经把这里面抽象的概念和后面抽象基类的概念弄混淆。

1.抽象的概念

从具体事物抽出、概括出它们共同的方面、本质属性与关系等,而将个别的、非本质的方面、属性与关系舍弃,这种思维过程,称为抽象。 --baidu

 在编程中,最简单的抽象概念就是计算机能理解的一步一步的计算步骤抽象成类或者函数来进行调用,方便人进行抽象理解也方便重用(过程抽象)。

最开始的编程历史中就和我们初学编程一样,都是过程抽象(结构化设计方法),但是经过发展慢慢发现仅仅是结构化设计已经满足不了我们了,于是有了对面向对象的需求。

2.面向对象的概念

面向对象是一种对现实世界理解和抽象的方法,是计算机编程发展到一定阶段后,产生的一种软件开发方法。 --baidu

面向对象中的对象:对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。 --baidu

https://baike.baidu.com/item/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1/2262089?fr=aladdin#2

三大特性:封装、继承、多态。

3.类的概念

具有相同特性和行为的对象的抽象就是类。对象的抽象是类,类的具体是对象。类有属性和操作。

  4.python面向对象的设计

1、2、3中算是编程中的基本概念吧,python中的面向对象设计理念和其他静态语言还是有所区别的。

a)python面向对象方法中一些比较重要的知识点(不详解)

鸭子类型、抽象基类、继承的时候的查找算法和super函数、静态方法、类方法、实例方法、python的数据封装和私有属性

b)python中一切皆对象,类和函数也是对象。

c)  类和函数在python中作为对象有哪些特质?

- 可以赋值给一个变量

- 可以添加到集合对象中

- 可以作为参数传递给函数

- 可以当作函数的返回值

二  type、object和class

在看这段之前,需要先看python基础明白继承和实例的概念,还有父类和基类。

  1.type可以用来返回一个对象的类型

     a)当a是普通int、str类型时

这个结果很好玩,可以发现1的类型是int,int的类型是type。还有type的类型竟然也是type。

可以得出 type类生成了int类,int类(也是对象)生成了 a这个实例

也就是 type--》class--》object

b)如果当a是一个自定义类的时候呢?

a是Student类型,Student是type类型

所以可以得出  type是用来生成类对象的,所有的类都是type类。包括list、dict等也是的。

逻辑:类是type(自己也是个类)的对象,其他的类型是类生成的对象

2.object是所有类的基类,包括也是type这个类的基类

object是最顶层的基类,所有的类最后推到都是继承object类的。

发现type是object类的子类的,那object呢?
 
type继承了object类,
object是由type生成的对象。两者成为了循环。
而且object是最顶层的类,再往上就没有类了。
 
总结:type、object和class的关系为:
 
思考:python为什么会设计成这样的一切皆对象呢?
对象是可以随时修改的。

三  python中常用的内置类型

对象在python中,有三个特征,身份、类型和值。

  • 身份: 每一个对象都有一个唯一的身份标识自己。任何对象的身份可以使用内建函数id()来得到。这个值可以被认为是该对象的内存地址
  • 类型: 对象的类型决定了对象可以保存什么类型的值,可以进行什么样的操作,以及遵循什么样的规则。可以内建type()查看对象的类型
  • 值:对象表示的数据项

其中类型的分类常用的有可迭代类型、不可迭代类型等、和其他序列类型、映射(mapping)、数值(int、float等)、集合、上下文管理等一系列类型。

查看type实现了哪些Type?可以用isinstance来判断这个对象是否属于这个基本类型。

>>> import types

>>> dir(types)

['AsyncGeneratorType', 'BuiltinFunctionType', 'BuiltinMethodType', 'CodeType', 'CoroutineType', 'DynamicClassAttribute', 'FrameType', 'FunctionType', 'GeneratorType', 'GetSetDescriptorType', 'LambdaType', 'MappingProxyType', 'MemberDescriptorType', 'MethodType', 'ModuleType', 'SimpleNamespace', 'TracebackType', '_GeneratorWrapper', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_ag', '_calculate_meta', '_collections_abc', '_functools', 'coroutine', 'new_class', 'prepare_class']

>>> isinstance([], list)

True

>>> isinstance({}, dict)

True

这里藏着很重要的知识点鸭子类型和魔法函数~ 以后会慢慢深入了解的。

PythonI/O进阶学习笔记_1.抽象、面向对象、class/object/type的更多相关文章

  1. PythonI/O进阶学习笔记_3.2面向对象编程_python的继承(多继承/super/MRO/抽象基类/mixin模式)

    前言: 本篇相关内容分为3篇多态.继承.封装,这篇为第二篇 继承. 本篇内容围绕 python基础教程这段: 在面向对象编程中,术语对象大致意味着一系列数据(属性)以及一套访问和操作这些数据的方法.使 ...

  2. PythonI/O进阶学习笔记_3.1面向对象编程_python的多态和鸭子类型

    前言: 与第一篇的面向对象内容不同的是,第一篇中的面向对象更多的是与类.对象结合起来的概念粗浅理解,就是在编程历史中诞生的一种思想方法. 这篇的面向对象编程,更多落实到在语言设计实现中,是如何体现面向 ...

  3. PythonI/O进阶学习笔记_3.2面向对象编程_python的封装

    前言: 本篇相关内容分为3篇多态.继承.封装,这篇为第三篇 封装. 本篇内容围绕 python基础教程这段: 在面向对象编程中,术语对象大致意味着一系列数据(属性)以及一套访问和操作这些数据的方法.使 ...

  4. PythonI/O进阶学习笔记_5.python的set和dict

    前言: 我一直觉得对我来说学习知识很忌讳不系统.本篇内容与上一篇 自定义序列类是有联系的. 上一篇比较通范的了解了序列类的一些协议和特性,并且有些list的内容.这篇更加具体到set和dict这两个序 ...

  5. PythonI/O进阶学习笔记_4.自定义序列类(序列基类继承关系/可切片对象/推导式)

    前言: 本文代码基于python3 Content: 1.python中的序列类分类 2. python序列中abc基类继承关系 3. 由list的extend等方法来看序列类的一些特定方法 4. l ...

  6. PythonI/O进阶学习笔记_6.对象引用,可变性和垃圾回收

    前言: 没有前言了- -......这系列是整理的以前的笔记上传的,有些我自己都忘记我当时记笔记的关联关系了. 记住以后 笔记记了就是用来复习的!!!不看不就啥用没了吗!!! content: 1.p ...

  7. PythonI/O进阶学习笔记_7.python动态属性,__new__和__init__和元类编程(上)

    content: 上: 1.property动态属性 2.__getattr__和__setattr__的区别和在属性查找中的作用 3.属性描述符 和属性查找过程 4.__new__和__init__ ...

  8. PythonI/O进阶学习笔记_8.python的可迭代对象和迭代器、迭代设计模式

     content: 1.什么是迭代协议 2. 什么是迭代器(Iterator)和可迭代对象(Iterable) 3. 使用迭代器和可迭代对象 4. 创建迭代器和可迭代对象 5. 迭代器设计模式   一 ...

  9. PythonI/O进阶学习笔记_10.python的多线程

     content: 1. python的GIL 2. 多线程编程简单示例 3. 线程间的通信 4. 线程池 5. threadpool Future 源码分析   ================== ...

随机推荐

  1. apache添加https证书

    今天折腾了一下,总结apache添加https证书的方法. 证书类型分为两种, A)自签名证书 利用oepnssl命令生成.csr和key文件,没有授信,没有有效期,但是可以强制使用https协议,可 ...

  2. C#7.2 新增功能

    连载目录    [已更新最新开发文章,点击查看详细] C# 7.2 又是一个单点版本,它增添了大量有用的功能. 此版本的一项主要功能是避免不必要的复制或分配,进而更有效地处理值类型. C# 7.2 使 ...

  3. [剑指offer] 40. 数组中只出现一次的数字

    题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了偶数次.请写程序找出这两个只出现一次的数字. 思路: 解法一: 哈希表 class Solution { public: void Find ...

  4. ASP.NET Core系列(三):启动类Startup

    前面讲了ASP.NET Core 的项目结构,查看完整的ASP.NET Core系列文章:https://www.cnblogs.com/zhangweizhong/category/1477144. ...

  5. linux初学者-DDNS配置篇

    linux初学者-DDNS配置篇 如果DNS服务器要记录多台主机的IP,且这些主机的IP都是通过DHCPD服务自动获取的,那么将会造成很大的困难,因为在DNS设置时无法得知主机具体的IP.如果DHCP ...

  6. [算法]LeetCode 1.两数之和

    LeetCode 1.两数之和(python) 1.朴素解法 最朴素的两个for循环大法: class Solution: def twoSum(self, nums: List[int], targ ...

  7. PAY8 数字货币支付结算系统,全球付!实时结算!秒到账!

    数字货币支付是历史发展的必然 如今已经有越来越多的地方接受加密数字货币作为支付消费了,比如泰国电影院连锁店 Cineplex Group 可用加密货币买爆米花和电影票,西班牙一精品酒店接受数字货币支付 ...

  8. sift、surf、orb 特征提取及最优特征点匹配

    目录 sift sift特征简介 sift特征提取步骤 surf surf特征简介 surf特征提取步骤 orb orb特征简介 orb特征提取算法 代码实现 特征提取 特征匹配 附录 sift si ...

  9. WPF:事件委托对于不同界面间通信的应用

    界面1内设定点击事件,生成Path用事件传出public partial class TemplateWindow : Window     {         internal delegate v ...

  10. Placement_pools on Rados-GW

    The purpose of this test is to map a RadosGw Bucket to a specific Ceph pool. For exemple, if using a ...