博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python对象
阅读量:6224 次
发布时间:2019-06-21

本文共 1152 字,大约阅读时间需要 3 分钟。

Python对象

2000年12月12日| 弗雷德里克伦德

简介  

重置你的大脑。

对象  

所有Python对象都有:

  • 唯一标识(由id(x)返回的整数)
  • 一个类型(由类型(x)返回)
  • 一些内容

你无法改变身份。

您无法更改类型。

某些对象允许您更改其内容(不改变标识或类型)。

某些对象不允许您更改其内容(更多信息如下)。

该类型由一个类型对象表示,它更了解这种类型的对象(它们通常占用多少字节的内存,它们有什么方法等)。

更新:在CPython 2.2及更高版本中,您可以在更改类型。)

更多关于对象  

对象也可能有:

  • 零个或多个方法(由类型对象提供)
  • 零个或多个名字

某些对象具有允许您更改对象内容的方法(在适当的位置进行修改)。

某些对象只有允许您访问内容的方法,而不是更改它。

有些对象根本没有任何方法。

即使他们有方法,你也永远不能改变类型,也不能改变身份。

属性赋值和项目引用之类的东西只是语法糖(更多信息如下)。

姓名  

名称有点不同 - 它们不是对象的真正属性,对象本身不知道它的名称。

一个对象可以有任意数量的名称,或者根本没有名称。

名称存在于名称空间中(例如模块名称空间,实例名称空间,函数的本地名称空间)。

命名空间是(名称,对象引​​用)对的集合(使用字典实现)。

当您调用函数或方法时,其命名空间将使用您调用它的参数进行初始化(名称取自函数的参数列表,对象是您传入的对象)。

作业  

赋值语句修改名称空间,而不是对象。

换一种说法,

name = 10

表示您将名称“name”添加到本地名称空间,并使其引用包含值10的整数对象。

如果名称已存在,则分配将替换原始名称:

name = 10 
name = 20

意味着您首先将名称“name”添加到本地名称空间,并使其引用包含值10的整数对象。然后,您将替换名称,使其指向包含值20的整数对象。原始的“10”对象不受此操作的影响,并且不关心。

相反,如果您这样做:

name = [] 
name.append(1)

您首先将名称“name”添加到本地名称空间,使其引用空列表对象。这会修改名称空间。然后,您在该对象上调用一个方法,告诉它将一个整数对象附加到自身。这会修改列表对象的内容,但它不会触及命名空间,也不会触及整数对象。

name.attrname [index]这样的东西只是方法调用的语法糖。第一个对应于__setattr__ / __getattr__,第二个对应于 __setitem__ / __getitem __(取决于它们出现的赋值的哪一侧)。

就这样。

分享于:

 ©2000 Fredrik Lundh

转载于:https://www.cnblogs.com/Xingtxx/p/11044208.html

你可能感兴趣的文章
Apache Flink fault tolerance源码剖析(五)
查看>>
HTAP数据库 PostgreSQL 场景与性能测试之 18 - (OLAP) 用户画像圈人场景 - 数组包含查询与聚合...
查看>>
GitHub最新命令使用教程
查看>>
web中间件切换(was切tomcat)
查看>>
onvif规范的实现:server端Discovery实现,通过OnvifTestTool12.06测试
查看>>
Hadoop: MapReduce2多个job串行处理
查看>>
2017阿里双11交易创建峰值 32.5 万笔/秒!
查看>>
【译】统一样式语言
查看>>
十分钟教程:用Keras实现seq2seq学习
查看>>
Netflix: 使用 React 构建高性能的电视用户界面
查看>>
在网站 Logo 上右击时提示下载网站的 Logo 素材下载
查看>>
移动端设计最佳实践
查看>>
运营商如何从NaaS中获益
查看>>
大数据计数原理1+0=1这你都不会算(一)
查看>>
艾普联手OPENSTACK 打造公众云
查看>>
从线上卖到线下,秘籍在这里|千牛头条双11直播
查看>>
李飞飞:为什么计算机视觉对机器人如此重要?
查看>>
数据的价值 删除无用数据可降低风险
查看>>
2017年五大关键云趋势:容器、AI等
查看>>
JedisPool资源池优化
查看>>