python3 type object_python3中的type与object

在python中,一切皆对象,应该怎么理解呢??

先来看几个例子:

[root@localhost ~]# python3

Python 3.6.3rc1 (default, Feb 26 2018, 22:34:25)

[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux

Type "help", "copyright", "credits" or "license" for more information.

>>> a = 1# 定义一个变量,值为1

>>> type(a)# 查看变量a的类型,可以看出变量a是由int类实例而来

>>> type(1)# 查看整数1的类型,结果也是由int类实例而来

>>> type(int)# 查看int类的类型,得出结论:int类型是由type类实例化而来

>>>

>>> str1 = 'aa'# 定义一个变量,值为'aa'字符串

>>> type(str1)# 查看变量str1的类型,可以看出变量str1是由str类实例而来

>>> type('aa')# 查看'aa'字符串的类型,结果也是由str类实例而来

>>> type(str)# 查看str类的类型,得出结论:str类型是由type类实例化而来

>>>

>>> class Goods:# 自定义一个Goods商品类

... pass

...

>>> good1 = Goods()# 实例化Goods类,得到实例化对象good1

>>> type(good1)# 查看good1的类型,可以看到是由Goods类实例化出来的

>>> type(Goods)# 查看Goods类的类型,得出结论:Goods类是由type类实例化而来的

同理,我们也可以使用type方法查看list,tuple,dict,set等数据类型的类型,这些数据类型都是由type类实例化来的

>>> type(list)

>>> type(tuple)

>>> type(dict)

>>> type(set)

所以,可以得出结论:

在python3中,所有数据类型的变量都是由对应的类来创建的,而创建数据类型的类都是由type类实例化得到所以,python中所有的数据类型都是type类实例化来的

在上面的例子里,定义一个Goods类,然后根据Goods类实例化good1对象

>>> Goods.__bases__# 查看Goods类的基类,结果为object类

(,)

>>> class TestGoods(Goods):# 再定义一个TestGoods类,继承Goods类

... pass

...

>>> TestGoods.__bases__# 查看TestGoods类的基类,结果显示为Goods类

(,)

所以,在定义类时,如果未指定类所继承的父类,其基类都是object

从上面的例子知道,所有数据类型的变量都是由对应的类来创建的

>>> int.__bases__# 查看int类的基类,结果为int类是继承自object类的

(,)

>>> str.__bases__# 查看str类的基类,结果为str类是继承自object类的

(,)

>>> tuple.__bases__# 查看tuple类的基类,结果为tuple类是继承自object类的

(,)

>>> list.__bases__# 查看list类的基类,结果为list类是继承自object类的

(,)

>>> dict.__bases__# 查看dict类的基类,结果为dict类是继承自object类的

(,)

>>> set.__bases__# 查看set类的基类,结果为set类是继承自object类的

(,)

所以,object是最顶层基类

通过查看python源码,也可以验证这个结论

c9b77f0dbf4f343fe1f6820604b3cd96.png

2449cce7551bd1aa181bcb8a2fd6875e.png

822379d7210eabbead762435ee2858cf.png

677e196bd53e45c09787efa8535f5a78.png

b192b9fc146411dd83b554bcc1335321.png

6ff7089cbfdbb963be8d2a3a3f362f63.png

在前面,已经知道,python所有数据类型的类型都是由type类实例化得到的,那么type类又是由什么实例化而来,type类的基类又是什么呢

>>> type(type)# 查看type的类型,结果也是type类

>>> type.__bases__# 查看type的基类,结果为object

(,)

通过查看源码,可以看到type类是继承自object的

7f4f50825de657090d8cbe2e9f36fcc8.png

由此可以知道,type是一个类,同时type也是一个对象

object类是所有类的基类,object类的基类又是什么呢??

>>> type(object) # 查看object的类型,结果为object类也是由type类实例化而来

>>> object.__bases__# 查看object的基类,结果为object类的基类为空

()

综上所述,object与type和class的关系如下图所示

51029b942455d533018150233f42b90d.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值