我的编程空间,编程开发者的网络收藏夹
学习永远不晚

3.Python对象

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

3.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中,一切都是指针 .

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

3.Python对象

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

3.Python对象

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

#3 Python面向对象(二)

前言上一节主要记录面向对象编程的思想以及Python类的简单创建,这节继续深入类中变量的相关知识,Here we go!Python中类的各种变量1.1 类变量类变量定义:在类中,在函数体(方法)外的变量称为类变量。类变量在整个类中是公用的
2023-01-30

8.python之面相对象part.3(

在python这门编程语言中,一个类可以去继承一个父类甚至多个父类,只继承一个父类就是单继承,如果一个子类继承了多个父类,那么这就是多继承。原始类被称为“基类”(超类),继承了其他类的新式类被称为“子类”或“派生类”。一.如何实现类的继承。
2023-01-31

3.类与对象

Java 系统提供的类库也称为Java API,它是系统提供的已实现的标准类的集合。在J2SE中我们可以将Java API的包主要分为3部分:“java.*”包,“javax.*”包,“org.*”包。        其中以 java开头的
2023-01-31

javascript面向对象3

函数创建函数:function f(x){…..};var f = function(x){…};上面两种形式都可以创建名为f()的函数,不过后一种形式可以创建匿名函数。       函数定义时可以设置参数。如果传给函数的参数个数不够,则从
2023-01-31

Python 3 学习笔记:面向对象编程

概述面向对象编程(Object Oriented Programming,即 OOP),是一种程序设计思想,比面向过程编程更加灵活,更易扩展。Python 在设计的时候就是按照面向对象编程的思想设计的,像我们前面学过的各种数据类型,如字符串
2023-01-31

php面向对象教程3

5.如何实例化对象我们上面说过面向对象程序的单位就是对象,但对象又是通过类的实例化出来的,既然我们类会声明了,下一步就是实例化对象了。当定义好类后,我们使用new 关键字来生成一个对象。$对象名称= new 类名称();
2023-01-31

python 面向对象、类、对象

class 类 object 对象 object-oriented programming 面向对象,简称OOP attribute 属性 method 方法inheritance 继承 python中通过类和对象来实现 面向对象的编程面向
2023-01-31

Scala 学习之面向对象(3)

==> 类        ---> 类的定义class Student{    // 定义属性    private var stuName:String = "Tom"    private vat stuAge:Int = 18    
2023-01-31

Python类对象

python类对象python类对象支持两种操作:属性引用和实例化。属性引用 使用 Python 中所有属性引用所使用的标准语法: obj.name。 有效的属性名称是类对象被创建时存在于类命名空间中的所有名称。 因此,如果类定义是这样的:
2023-01-31

python面相对象之类和对象

类和对象是python面相对象中两个重要的概念,类是客观世界中事物的抽象,而对象是类实例后的变量,比如汽车模型可以造出各种各样的汽车,汽车模型就是类,汽车就是汽车模型抽象出来的实例,这里有必要还有说一下方法,函数在类中叫方法,比如汽车模型有
2023-01-31

Python编程学习3:Python 对

面试遇到一个问题:如何删除一个python对象?下面将介绍python的对象引用和 del删除引用1.  首先介绍下python的对象引用1)Python中不存在传值调用,一切传递的都是对象引用,也可以认为是传址调用。即Python不允许程
2023-01-31

python - 面向对象

#python面向对象 - 类定义  注意:特殊方法"__init__"前后分别有两个下划线!!!   __init__方法可以理解成定义属性的方法,编辑器中会默认将属性都绑定到self中,在使用时直接self.shuxing 即可哟;  
2023-01-31

python对象和类

#coding:utf-8#1、对象是一个有着相应行为的数据的集合#2、在面向对象建模中,用于各种描述对象的属于叫做类#3、类和对象的区别:类描述了对象,是创建对象的模板#4、关联是把两个类联系起来最基本的方式#5、一个类可以通过关系中其他
2023-01-31

python 对象练习

1.与所有python对象相关的三个属性。   身份:唯一的身份标识,使用内建函数id()得到,可以被认为是对象的内存地址。   类型:决定对象可以保存什么类型的值,可进行什么样的操作,遵循什么样的规则。使用type()得到。   值:对象
2023-01-31

Python 对象(type/objec

在python中一共有两种作用域:全局作用域和函数作用域全局作用域:在全局都有效,全局作用域在程序执行时创建,在程序执行结束时销毁;所有函数以外的区域都是全局作用域;在全局作用域中定义的变量,都属于全局变量,全局变量可以在程序的任意位置被访
2023-01-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录