• Python对象


    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 __(取决于它们出现的赋值的哪一侧)。

    就这样。

    分享于:http://effbot.org/zone/python-objects.htm

    版权所有 ©2000 Fredrik Lundh

  • 相关阅读:
    C++下载数据至.map/.txt/.list文件
    Byte数组转浮点数
    linux下进程的最大线程数、进程最大数、进程打开的文件数
    linux后台程序开发常用工具
    linux下csv导出文件中文乱码问题
    50个高端大气上档次的管理后台界面模板(转)
    如何注册.net 的类库dll 为com组件(转)
    vue页面信息
    CSS特效
    Css样式
  • 原文地址:https://www.cnblogs.com/Xingtxx/p/11044208.html
Copyright © 2020-2023  润新知