PythonI/O进阶学习笔记_1.抽象、面向对象、class/object/type

前言:html

是本身在学习python进阶IO学习视频的时候的理解和笔记,由于不少都是本菜鸟学习时候的本身的理解,有可能理解有误。python

Content:算法

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

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

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

一  抽象和面向对象和类学习

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

    1.抽象的概念spa

    从具体事物抽出、归纳出它们共同的方面、本质属性与关系等,而将个别的、非本质的方面、属性与关系舍弃,这种思惟过程,称为抽象。 --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面向对象的设计

    一、二、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

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

原文出处:https://www.cnblogs.com/besttr/p/11318699.html

相关文章
相关标签/搜索