基本原理

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.zhihu.com/question/274264711/answer/382692134
      文章大体内容类似,并举了一些例子

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 "", line 1, in 
      TypeError: unsupported operand type(s) for +: 'int' and 'str'
      
      python中的赋值操作不影响object本身

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

  • 非常有启发的讨论:
    • 解释了Python中objecttype两个关键字的含义:object是类父子关系的顶端,所有数据类型的父类归根结底都是他;type是类型和实例关系的顶端,所有对象都是他的实例。
    • 同时也加深了对object(对象)和type(类型)这2个广义概念的理解
    • 提出了一种三列模型:
      • 元类列:Type,类的类,包括type(关键字),以及继承他的元类
      • 类列:TypeObject,类型对象,包含大部分直接使用的数据类型
      • 实例列:Instance
  • 参考资料
    • 英文原版:http://www.cs.utexas.edu/~cannata/cs345/Class%20Notes/15%20Python%20Types%20and%20Objects.pdf
    • 元类(metaclass的概念):https://stackoverflow.com/questions/100003/what-are-metaclasses-in-python

自己的一些总结

  • 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

你可能感兴趣的:(基本原理)