人生苦短,我用Python之面对对象的核心剖析

人生苦短,我用Python

  • 面对对象
    • 面对对象的本质的原理
    • object对象与type对象的迷局

面对对象

Python的面对对象是真正的面对对象,Python中的所有对象都是对象,因为是对象而可以被更改,或者是被认为自定义设置一些东西,极大的增加了Python的自由度。

面对对象的本质的原理

我们知道Python中的str 或者是int这是一种对象,他们是由class int 或者class str的实例化而来,但是通过type函数对class str 或者其他的内置类进行 打印的时候,我们可以发现

class A:
    pass
print(type(str)) #  class type
print(type(A)) # class type

总这里我们不难看出,其实所有的子类都继承与元类type,type的实例化对象就是各种类,甚至type也是自己的实例化对象。这样我们就可以窥探出type的厉害之处,他是Python面对对象的核心所在。补充说明,type()函数如果只有一个参数,那返回值就是传入参数的类。如果是多个参数:

  1. 类名 字符串
  2. 继承的类名 元祖
  3. 类属性 dict

所以 type其实可以创建类,这是非常关键的。
由此我们可以想象,其实type就像一个女娲,她造了世人,也包括她自己,而她造的人又继续造人,这样就是Python面对对象的核心了。

object对象与type对象的迷局

  1. object 是 type的基类,也是所有类的基类,这是继承关系
  2. object 是type对象的实例化,这是实例化对象关系

我们可以发现这个圈里面的核心就是Python面对对象的基础了,但很遗憾我没有搞清楚,顺便说一下,元类编程只能说明type与所有对象的关系,而没有说清楚与object基类的对象的关系。

试想 object基类可变吗?他是type的实例化同时又是type的基类,这不矛盾吗?
下一篇我会继续分析之间的关系,我现在也是一头雾水,如有大佬指点一二,在下感激不尽。

你可能感兴趣的:(面对对象)