返回顶部
首页 > 资讯 > 后端开发 > Python >3.Python对象
  • 364
分享到

3.Python对象

对象Python 2023-01-31 07:01:25 364人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

一.对象 python 对象 : Python使用对象模型来存储数据.构造任何类型的值都是一个对象,. 尽管Python通常当成一种 "面向对象的编程语言" ,但是你完全能够写出不使用任何类和实例的实用脚本. 所有的Python对象都拥有

一.对象

  1. python 对象 : Python使用对象模型来存储数据.构造任何类型的值都是一个对象,. 尽管Python通常当成一种 "面向对象编程语言" ,但是你完全能够写出不使用任何类和实例的实用脚本.
  2. 所有的Python对象都拥有三个特征 : 身份,类型和值 .
    1. 身份 : 每一个对象都有一个唯一的身份标识自己,任何对象的身份可以使用内建
      函数id() 来得到. 这个值被认为是改对象的内存地址.
    2. 类型 : 对象的类型决定了该对象可以保存什么类型的值,可以进行什么样的操作,
      一级遵循什么样的规则.可以通过函数type()查看Python对象的类型.
      3.值 : 对象表示的数据项 .

上面三个特性在对象创建的时候就被赋值,除了值之外,其他两个特性都是只读的.对
于新风格的类型和类,对象的类型也是可以改变的,不过对于初学者并不推荐这样做.

  1. 对象属性 : 某些Python对象有属性,值,或相关联的可执行代码,比如方法(method) . Python用点(.) 标记法开访问属性. 属性包括相应对象的名字等等 . 最常用的属性是函数和方法 ,不过有一些Python类型也有数据属性. 含有数据属性的对象包括(但不限于) : 类,类实例,模块和复数 .

二. 标准类型(基本数据类型) :

  1. 整数
  2. 浮点数
  3. 布尔值
  4. 复数
  5. 字符串
  6. 列表
  7. 元组
  8. 字典

三.其他内建类型 :

  1. 类型
  2. Null对象(None)
  3. 文件
  4. 集合/固定集合
  5. 函数/方法
  6. 模块
  7. 类型对象和type类型对象 : 虽然看上去把类型本身也当成对象有点特别,我们还是要在这里提一提. 你一定还记得,对象的一系列固有行为和特征(比如支持哪些运算,具有哪些方法) 必须事先定义好. 从这个角度看,类型正是保存这些信息的最佳位置. 描述一种类型所需要的信息不可能用一个字符串来搞定, 所以类型不能是一个简单的字符串,这些信息不能也不应该和数据保存在一起,所以我们将类型定义成对象.

  8. 所有类型对象的类型都是type ,它也是所有Python类型的根和所有Python标准类的默认元类(metaclass) . 类就是类型,实例是对应类型的对象.

  9. None,Python的Null 对象 : Python有一个特殊的类型,被称作Null对象或者NoneType ,它只有一个值,那就是None.它不支持任何运算也没有任何内建方法. None没有什么有用的属性,它的布尔值总是False.
  10. 核心笔记 : 布尔值 . 所有标准对象均可用于布尔测试,同类型的对象之间可以比较大小 . 每个对象天生具有布尔True 或 False .空对象,值为零的任何数字或者Null对象None的布尔值都是False .下列对象的布尔值是False :
    1. None
    2. False
    3. 所有值为零的数
    4. 0 (整型)
    5. 0.0(浮点型)
    6. 0.0+0.0j(复数)
    7. '' (空字符串)
    8. [] (空列表)
    9. () (空元组)
    10. {} (空字典)
      值不是上面列出来的任何值的对象的而不知都是True , 例如non-empty ,non-zero 等
      等 . 用户创建的类实例如果定义了nonzero(_nonzero)()) 或length(len()) 且
      值为 0 ,那么他们的布尔值就是False .

四. 内部类型

● 代码
● 帧
● 跟踪记录
● 切片
● 省略
● Xrange

  1. 代码对象 :

  2. 帧对象 :

  3. 跟踪记录对象 : 当你的代码出错时 , Python就会引发一个异常 . 如果异常未被捕获和处理,解释器就会退出脚本运行 ,处理程序就可以访问这个跟踪记录对象 .

  4. 切片对象 : 当使用Python扩展的切片语法时,就会创建切片对象. 扩展的切片语法允许对不同的索引切片操作,包括步进切片,多维切片,及省略切片 . 切片对象也可以由内建函数 slice() 来生成 . 步进切片允许利用第三个切片元素进行步进切片.

  5. 省略对象 :

  6. XRange 对象 : 调用内建函数xrange() 会生成一个Xrange对象,xrange() 是内建函数range() 的兄弟版,用于需要节省内存使用或range() 无法完成的超大数据集场合 .

五. 标准类型运算符

  1. 比较运算符用来判断同类型对象是否相等,所有内建类型均支持比较运算,比较运算返回布尔值True 或 False .

  2. 不同于很多其他语言,多个比较操作可以在同一行上进行, 求值顺序从左到右 .

  3. 我们会注意到,比较操作是针对对象的值进行的,也就是说比较的是对象的数值而不是对象本身.

  4. 对象身份比较 : 作为对值比较的补充,Python也支持对象本身的比较. 对象可以被赋值到另一个变量(通过引用) . 因为每个变量都指向同一个(共享的) 数据对象, 只要任何一个引用发生改变, 该对象的其他引用也会随之改变 .

  5. is is not : Python提供了is 和is not 运算符来测试两个变量是否指向同一个对象(对象身份).

  6. 核心提示 : 小整数池 .

  7. 布尔类型 : not 运算符拥有最高优先级, 只比所有运算低一级. and 和 or 运算符则相应的再低一点.

  8. 前面提到过Python支持一个表达式进行多种比较操作 ,其实这个表达式本质上是由多个隐式的and 链接起来的多个表达式.

六.标准类型内建函数

  1. type() : 接收一个对象作为参数,并返回它的类型, 它的返回值是一个类型对象 . 对type()的返回值再次调用type() ,注意type() 有趣的输出 .

  2. 核心笔记 : 在Python学习过程中, 偶尔会遇到某个运算符和某个函数是做同样一件事情 ,之所以如此是因为某些场合函数会比运算符更适合使用. 函数比表达式用起来方便 .

  3. type() 和isinstance() : Python不支持方法或函数重载,因此你必须自己保证调用的就是你想要的函数或对象 . type() 函数可以做到这一点 . isinstance 来判断某个对象是否是某个类的实例. 返回True 或 False .

  4. 减少函数调用的次数 : 如果我们减少函数的调用次数, 就会提高程序的性能 .

七. 类型工厂函数

  1. Python2.2.同意了类型和类,所有的内建类型现在也都是类 . 在这些基础上,原来的所谓内建转换函数像int() , type() ,list() 等等,现在都成了工厂函数 . 也就是说虽然他们看上去有点像函数,实质上他们是类.当你调用他们时,实际上是生成了该类型的一个实例 .

八.标准类型的分类

  1. 如果让我们最啰嗦的描述标准类型, 我们也许会称他们是Python的基本内建数据对象原始类型 .

    1. "基本" : 是指这些类型都是Python提供的标准或核心类型
    2. "内建" : 是由于这些类型是Python默认就提供的
    3. "数据" :因为他们用于一般数据存储
    4. "对象" : 因为对象是数据和功能的默认抽象
    5. "原始" : 因为这些类型提供的是最底层的粒度数据存储
    6. "类型" 因为他们就是数据类型
  2. 存储模型 : 我们队类型进行分类的第一种方式 ,就是看看这种类型的对象能保存多少个对象. Python的类型,就像绝大多数其他语言一样,能容纳一个或多个值.一个能保存单个字面对象的类型我们称它为院子或标量存储.那些可容纳多个对象的类型,我们称之为容器存储.(容器对象有时会在文档中被称为复合对象,不过这些对象并不仅仅指类型,还包括类似实例这样的对象)容器类型又带来一个新问题,那就是它是否可以容纳不同类型的对象. 所有的Python容器对象都能够容纳不同类型的对象.字符串看上去看一个容器类型,因为它"包含"字符(并且经常多余一个字符),不过由于Python并没有字符类型,所以字符串是一个自我包含的文字类型.

    1. 标量 / 原子类型 : 数值,字符串
    2. 容器类型 : 列表,元组,字典
  3. 更新模型 : 另一种对标准类型进行分类的方式就是,针对每一个类型问一个问题:'对象创建成功之后,它的值可以进行更新么 ? 某些类型允许他们的值进行更新,而另一些则不允许 . 可变对象允许他们的值被更新,而不可变对象则不允许他们的值被更改 .

  4. 为什么i = 0 ,i = i + 1 , i为什么等于1 . 不是说数值和字符串对象是不可改变的么 ? 事实上,这里是一个新对象被创建,然后它取代了旧对象. 通过id()函数就可以很清楚的看到对象实际上已经被替换了.

  5. 访问类型 :尽管前面两种模型分类方式在介绍Python时都很有用,他们还不是区分数据类型的首要模型. 对这种目的,我们使用访问模型.也就是说根据访问外面存储的数据的方式对数据类型进行分类.在访问模型中共有三种访问方式 : 直接存取,顺序,和映射 .

    1. 对非容器类型可以直接访问,.所有数值类都归到这一类
    2. 序列类型是指容器内的元素按从0 开始的索引顺序访问. 一次可以访问一个元素或多个元素,也就是大家所了解的切片. 字符串,列表和元组都归到这一类.前面说过,Python不支持字符类型,因此,虽然字符串是简单的文字类型,因为它有能力按照顺序访问子字符串,所以也将它归到序列类型.
    3. 映射类型类似序列的缩影属性忙不过来它的缩影并不使用顺序的数字偏移量取值,它的元素无序存放,通过一个唯一的key来访问,这就是映射类型,它容纳的是哈希键值对的集合.
  6. 为什么要对同样的数据类型再三分类呢 ? 首先,我们为什么要分类 ? 因为Python提供了高级的数据结构,我们需要将那些原始的类型和功能强大的扩展类型区分开来. 另一个原因就是这有助于搞清楚某种类型应该具有什么行为.
    1. 直接访问 : 数字
    2. 顺序访问 : 字符串,列表,元组
    3. 映射访问 : 字典
      数据类型 存储类型 更新模型 访问类型
      数字 Scalar 不可更改 直接访问
      字符串 Scalar 不可更改 顺序访问
      列表 Container 可更改 顺序访问
      元组 Container 不可更改 顺序访问
      字典 Container 可更改 映射访问

7.为什么要用这么多不同的模型或从不同的方面来分类 ? 所有这些数据类型看上去是很难分类的.他们彼此都有着错综复杂的关系,所有类型的共同之处最好能揭示出来,而且我们还想揭示每种类型的督导之处.没有两种类型横跨所有的分类. (当然,所有 的数值子类型能刀座了这一点,所以我们将它们归纳到一类当中) .最后我们确信搞清楚所有类型之间的关系会对你的开发工作有极大的帮助.你对每种类型了解越多,你就越能在自己的程序中使用恰当的类型以达到最佳的性能.

8.不支持的类型

  1. char或byte : Python没有这两种类型来保存单一字符或8比特整数.你可以使用长度为1的字符串表示字符或8比特整数
  2. 指针: Python替你管理内存,因此没有必要访问指针. 你可以用id()得到一个对象的身份号, 这是最接近指针的地址.因为你不能控制这个值,所以其实没有太大意义.在Python中,一切都是指针 .

--结束END--

本文标题: 3.Python对象

本文链接: https://lsjlt.com/news/192366.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 3.Python对象
    一.对象 Python 对象 : Python使用对象模型来存储数据.构造任何类型的值都是一个对象,. 尽管Python通常当成一种 "面向对象的编程语言" ,但是你完全能够写出不使用任何类和实例的实用脚本. 所有的Python对象都拥有...
    99+
    2023-01-31
    对象 Python
  • #3 Python面向对象(二)
    前言 上一节主要记录面向对象编程的思想以及Python类的简单创建,这节继续深入类中变量的相关知识,Here we go! Python中类的各种变量 1.1 类变量 类变量定义:在类中,在函数体(方法)外的变量称为类变量。类变量在整个类...
    99+
    2023-01-30
    面向对象 Python
  • 8.python之面相对象part.3(
    在python这门编程语言中,一个类可以去继承一个父类甚至多个父类,只继承一个父类就是单继承,如果一个子类继承了多个父类,那么这就是多继承。原始类被称为“基类”(超类),继承了其他类的新式类被称为“子类”或“派生类”。一.如何实现类的继承。...
    99+
    2023-01-31
    面相 对象 python
  • 3.类与对象
            Java 系统提供的类库也称为Java API,它是系统提供的已实现的标准类的集合。在J2SE中我们可以将Java API的包主要分为3部分:“java.*”包,“javax.*”包,“org.*”包。         其中...
    99+
    2023-01-31
    对象
  • javascript面向对象3
    函数 创建函数: function f(x){…..}; var f = function(x){…}; 上面两种形式都可以创建名为f()的函数,不过后一种形式可以创建匿名函数。        函数定义时可以设置参数。如果传给函数的参数个数...
    99+
    2023-01-31
    面向对象 javascript
  • Python 3 学习笔记:面向对象编程
    概述 面向对象编程(Object Oriented Programming,即 OOP),是一种程序设计思想,比面向过程编程更加灵活,更易扩展。 Python 在设计的时候就是按照面向对象编程的思想设计的,像我们前面学过的各种数据类型,如字...
    99+
    2023-01-31
    面向对象 学习笔记 Python
  • Java类与对象详解(3)
    目录 封装 封装的概念 访问限定符 封装扩展之包 包的概念 导入包中的类 自定义包 基本规则 包的访问权限控制举例 常见的包 static 成员 static 修饰成员变量 static修饰成员方法  static 成员变量的初始化 代码...
    99+
    2023-08-31
    java 开发语言
  • php面向对象教程3
    5.如何实例化对象我们上面说过面向对象程序的单位就是对象,但对象又是通过类的实例化出来的,既然我们类会声明了,下一步就是实例化对象了。当定义好类后,我们使用new 关键字来生成一个对象。$对象名称= new 类名称();<phpcla...
    99+
    2023-01-31
    面向对象 教程 php
  • Scala 学习之面向对象(3)
    ==> 类        ---> 类的定义class Student{     // 定义属性     private var stuName:String = "Tom"     private vat stuAge:Int...
    99+
    2023-01-31
    面向对象 Scala
  • javascript对象3个属性特征
    目录1、writable:可写2、enumerable:可枚举3、configurable:可配置对象特征: 1、writable:可写 writable表示是否可以设置属性的值 ...
    99+
    2024-04-02
  • python 面向对象、类、对象
    class 类 object 对象 object-oriented programming 面向对象,简称OOP attribute 属性 method 方法 inheritance 继承 python中通过类和对象来实现 ...
    99+
    2023-01-31
    面向对象 对象 python
  • JavaScript 对象创建的3种方法
    目录1、对象字面量2、new 关键字创建对象3、使用 Object.create() 创建对象 4、 使用扩展操作符:...5、使用Object.assign()方法6、简写属性7、...
    99+
    2024-04-02
  • Python类对象
    python类对象 python类对象支持两种操作:属性引用和实例化。 属性引用 使用 Python 中所有属性引用所使用的标准语法: obj.name。 有效的属性名称是类对象被创建时存在于类命名空间中的所有名称。 因此,如果类定义...
    99+
    2023-01-31
    对象 Python
  • Python编程学习3:Python 对
    面试遇到一个问题:如何删除一个python对象?下面将介绍python的对象引用和 del删除引用1.  首先介绍下python的对象引用1)Python中不存在传值调用,一切传递的都是对象引用,也可以认为是传址调用。即Python不允许...
    99+
    2023-01-31
    Python
  • python面相对象之类和对象
      类和对象是python面相对象中两个重要的概念,类是客观世界中事物的抽象,而对象是类实例后的变量,比如汽车模型可以造出各种各样的汽车,汽车模型就是类,汽车就是汽车模型抽象出来的实例,这里有必要还有说一下方法,函数在类中叫方法,比如汽车...
    99+
    2023-01-31
    对象 面相 python
  • Python面向对象之类和对象
    目录类定义类定义类和属性类中方法对象方法(普通方法)类方法静态方法魔术方法对象创建对象对象属性总结 类 定义类 所有类名首字母要求大写,多个单词时遵循驼峰命名法 所...
    99+
    2024-04-02
  • Python2与Python 3的对比
    首发 http://www.everlose.info/notes/2013/10/31/difference-between-python3-to-python2/ 这篇文章总结了一些与Python2.6相比Python3.0中的新特性...
    99+
    2023-01-31
    Python
  • python 面向对象
    面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序...
    99+
    2023-01-30
    面向对象 python
  • python面向对象
    python面向对象 目录: 1.类的定义和使用 2.类的封装 3.类的继承 4.多态   1.类的定义和使用 查、增加、修改、删除、初始化方法、实例化 __init__()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这...
    99+
    2023-01-30
    面向对象 python
  • Python 对象(type/objec
    在python中一共有两种作用域:全局作用域和函数作用域全局作用域:在全局都有效,全局作用域在程序执行时创建,在程序执行结束时销毁;所有函数以外的区域都是全局作用域;在全局作用域中定义的变量,都属于全局变量,全局变量可以在程序的任意位置被...
    99+
    2023-01-30
    对象 Python objec
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作