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类实例而来
<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对象
>>> 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的关系如下图所示

python3中的type与object的更多相关文章
- Python 中的type和object详解
1.python中的类 Python2.x 中的类分为两种,一种是所有继承自object的新式类,另外一种是经典类classobj, 新式类的写法: class A(object): pass 经典类 ...
- python中的type和object详解
关于这篇博客 这篇博客主要描述Python的新风格对象(new-style objects),如下: <type 'type'>和<type 'object'>分别是什么? 用 ...
- type和object详解
python中的type和object详解 关于这篇博客 这篇博客主要描述Python的新风格对象(new-style objects),如下: <type 'type'>和<t ...
- Python中type与Object的区别
Python中type与Object的区别 在查看了Python的API后,总算明白了.现在总结如下: 先来看object的说明: Python中关于object的说明很少,甚至只有一句话: clas ...
- Python中type和object
type 所有类是type生成的 a = 1 b = "abc" print("type a:{}".format(type(a))) print(" ...
- Python面试题之Python中type和object的关系
知乎上看到的提问: 两个是互为实例的关系,但不是互为子类的关系,只有type是object的子类,反之则不成立. 大牛说两者是蛋生鸡鸡生蛋的关系,但我还是不明白,有懂的麻烦解释一下, 希望不要给出外文 ...
- python 中type和object的关系
转自:https://segmentfault.com/a/1190000008938763 学习python的同学都知道这么几句话 object类是所有新式类的父类. type是所有类的类. 那么t ...
- python3中返回字典的键
我在看<父与子的编程之旅>的时候,有段代码是随机画100个矩形,矩形的大小,线条的粗细,颜色都是随机的,代码如下, import pygame,sys,random from pygame ...
- Python2和Python3中的字符串编码问题解决
Python2和Python3在字符串编码上是有明显的区别. 在Python2中,字符串无法完全地支持国际字符集和Unicode编码.为了解决这种限制,Python2对Unicode数据使用了单独的字 ...
随机推荐
- cocos 资源工作流程
前面的话 本文将详细介绍 cocos 中的资源工作流程 概述 [同步性] 资源管理器中的资源和操作系统的文件管理器中看到的项目资源文件夹是同步的 在资源管理器中对资源的移动.重命名和删除,都会直接在用 ...
- 【pytorch】pytorch-LSTM
pytorch-LSTM() torch.nn包下实现了LSTM函数,实现LSTM层.多个LSTMcell组合起来是LSTM. LSTM自动实现了前向传播,不需要自己对序列进行迭代. LSTM的用到的 ...
- AutoCAD .NET Wizard下载地址
懒人可以直接点击下面的链接: https://www.autodesk.com/developer-network/platform-technologies/autocad 在页面最低端找到相应 ...
- Hadoop系列(二):Hadoop单节点部署
环境:CentOS 7 JDK: 1.7.0_80 hadoop:2.8.5 hadoop(192.168.56.101) 配置基础环境 1. 测试环境可以直接关闭selinux和防火墙 2. 主机添 ...
- shutil、zipfile,tarfile
shutil 模块提供了大量的文件的高级操作.特别针对文件拷贝和删除,主要功能为目录和文件操作以及压缩操作. 1. shutil.copyfileobj(fsrc, fdst[, length]) 功 ...
- 我的python之路
一.基础语法 Python基础—基本语法结构 Python基础—程序控制结构 Python基础—基本数据类型 Python基础—文件的读写操作 二.函数 Python基础—初识函数 Python基础— ...
- [Windows Hyper-V-Server]Enable or disable firewall rules under powershell / powershell下启用禁用防火墙规则
http://www.cryer.co.uk/brian/windows/hyper-v-server/help_computer_cannot_be_managed.htm Enable COM+ ...
- 01Design and Analysis Algorithm Using Python-程振波
1.(p14)比较两个数的大小 a = int(input('num:')) b = int(input('num:')) def getMax(a,b): if a>b : print('Th ...
- Matlab 中subsystem mask封装子系统
Icon&port %%外型图表封装 %%.曲线型标注: plot(cos(:*pi),sin(:*pi)) %%.文字型标注: disp('PID\n控制器') %%.曲线加文字型标注: p ...
- Markdown——入门指南
导语: Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用.看到这里请不要被「标记」.「语言」所迷惑,Markdown 的语法十分简单.常用的标记 ...