基本原理

Python中的object(对象)到底是什么?

网络文章

http://effbot.org/zone/python-objects.htm

  • 这篇文章讨论了:
    • 什么是python object?有哪些必备的属性?包含哪些必备的东西?
    • 什么是name?name和python object之间的关系
    • 什么是assignment?assignment statement的真正含义
  • 一些笔记:
    • name和object无关,name也不是object的属性,object本身也不知道他有哪些names
    • Things like attribute assignment and item references are just syntactic sugar. Things like name.attr and name[index] are just syntactic sugar for method calls. The first corresponds to __setattr__/__getattr__, the second to __setitem__/__getitem__ (depending on which side of the assignment they appear).
  • 类似的一些文章

https://www.programiz.com/python-programming/namespace

  • 这篇文章详细介绍了:
    • name是什么,和object之间的关系,并举了实际的例子
    • 关于namespace只有一些简单的介绍

https://www.zhihu.com/question/43498005

  • 这些回答讨论了:
    • 为什么python是强类型语言?
    • 强类型语言/弱类型语言的区别?举出了一些例子
  • 一些笔记:
    • python中的变量只是一种标签(不能称之为引用?),引用(绑定)到真正的对象object
    • 任何对变量进行的运算,由对象本身的方法来决定行为,举一个例子:
      a+b等同于a.add(b),加法运算是对象的一个方法
      >>> a = 100
      >>> b = 's'
      >>> a+b
      Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      TypeError: unsupported operand type(s) for +: 'int' and 'str'
      
      python中的赋值操作不影响object本身

https://www.zhihu.com/question/38791962

自己的一些总结

  • python中的所有东西都跟对象(object)这个概念有关,所有的数据都是由对象本身,或者对象之间的关系来表示
  • object的定义可以参考C++中的定义(An object, in C++, is a region of storage that has XXX),就是一段包含各种属性/特性/组成部分的内存区域
  • 组成object的属性为:
    • a unique identity (an integer, returned by id(x))
    • a type (returned by type(x))
    • some content
    • zero or more methods (provided by the type object)
    • zero or more names
  • object的type由另外的type object来表示(描述)
  • object的方法也是用type object来提供,对object进行运算(各种表达式,比如成员赋值,加减法等)实际上调用的是object的相应方法
  • python中的name只是一种标签(不能称之为引用?),引用(绑定)到真正的对象object.
  • name -> object -> operator -> type object -> method
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,448评论 0 10
  • 启动svn : svnserve -d -r /var/svn
    mytao4032阅读 354评论 0 0
  • 1. 简单画图 2. 多窗口figure 每次调用figure()函数都会生成一个新窗口,后续的plot()都会在...
    FantDing阅读 700评论 0 0
  • 菜品的定价一般都是通过食材成本、制作的难易以及餐厅的档次和服务来定的。比如说,大排档一盘青菜可能就12元左右,在高...
    美食大师兄阅读 466评论 0 0
  • 随笔记录提高专注力 这里有一种很好的提高注意力的方法,我们称之为“笔记法”,用来帮助你有意识地定位和存档最重要的阅...
    思念竹林阅读 182评论 0 0