python3中的type与object

枫铃3年前 (2021-09-30)Python231

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

先来看几个例子:

>>> a = 1						# 定义一个变量,值为1
>>> type(a)						# 查看变量a的类型,可以看出变量a是由int类实例而来
<class 'int'>
>>> type(1)						# 查看整数1的类型,结果也是由int类实例而来
<class 'int'>
>>> type(int)					# 查看int类的类型,得出结论:int类型是由type类实例化而来
<class 'type'>
>>> 
>>> str1 = 'aa'					# 定义一个变量,值为'aa'字符串
>>> type(str1)					# 查看变量str1的类型,可以看出变量str1是由str类实例而来
<class 'str'>
>>> type('aa')					# 查看'aa'字符串的类型,结果也是由str类实例而来
<class 'str'>
>>> type(str)					# 查看str类的类型,得出结论:str类型是由type类实例化而来
<class 'type'>
>>> 
>>> class Goods:				# 自定义一个Goods商品类
...     pass
... 
>>> good1 = Goods()				# 实例化Goods类,得到实例化对象good1
>>> type(good1)					# 查看good1的类型,可以看到是由Goods类实例化出来的
<class '__main__.Goods'>
>>> type(Goods)					# 查看Goods类的类型,得出结论:Goods类是由type类实例化而来的
<class 'type'>

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

>>> type(list)
<class 'type'>
>>> type(tuple)
<class 'type'>
>>> type(dict)
<class 'type'>
>>> type(set)
<class 'type'>

所以,可以得出结论:

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

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

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> Goods.__bases__				# 查看Goods类的基类,结果为object类
(<class 'object'>,)
>>> class TestGoods(Goods):		# 再定义一个TestGoods类,继承Goods类
...     pass
... 
>>> TestGoods.__bases__			# 查看TestGoods类的基类,结果显示为Goods类
(<class '__main__.Goods'>,)

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

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

>>> int.__bases__				# 查看int类的基类,结果为int类是继承自object类的		
(<class 'object'>,)
>>> str.__bases__				# 查看str类的基类,结果为str类是继承自object类的
(<class 'object'>,)
>>> tuple.__bases__				# 查看tuple类的基类,结果为tuple类是继承自object类的
(<class 'object'>,)
>>> list.__bases__				# 查看list类的基类,结果为list类是继承自object类的
(<class 'object'>,)
>>> dict.__bases__				# 查看dict类的基类,结果为dict类是继承自object类的
(<class 'object'>,)
>>> set.__bases__				# 查看set类的基类,结果为set类是继承自object类的
(<class 'object'>,)

所以,object是最顶层基类

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

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

>>> type(type)					# 查看type的类型,结果也是type类
<class 'type'>
>>> type.__bases__				# 查看type的基类,结果为object
(<class 'object'>,)

通过查看源码,可以看到type类是继承自object的
在这里插入图片描述
由此可以知道,type是一个类,同时type也是一个对象

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

>>> type(object) 			# 查看object的类型,结果为object类也是由type类实例化而来
<class 'type'>
>>> object.__bases__		# 查看object的基类,结果为object类的基类为空
()

综上所述,object与type和class的关系如下图所示
在这里插入图片描述

相关文章

利用python同步windows和linux文件

写python脚本的初衷,每次在windows编辑完文件后,想同步到linux上去,只能够登录服务器,...

爬虫基本原理

爬虫基本原理 一、爬虫是什么? 百度百科和维基百科对网络爬虫的定义:简单来说爬虫就是抓取目标网站内容的工具,一般是根据定义的行...

Django 函数和方法的区别

函数和方法的区别 1、函数要手动传self,方法不用传 2、如果是一个函数,用类名去调用,如果是一个方法...

Django 知识补漏单例模式

单例模式:(说白了就是)创建一个类的实例。在 Python 中,我们可以用多种方法来实现单例模式&#x...

Django基础知识MTV

Django简介 Django是使用Python编写的一个开源Web框架。可以用它来快速搭建一个高性能的网站。 Django也是一个MVC框架。但是在Dj...

Python mysql 索引原理与慢查询优化

一 介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。