Python 中的type和object详解
1、python中的类
Python2.x 中的类分为两种,一种是所有继承自object的新式类,另外一种是经典类classobj,
新式类的写法:
class A(object):
pass
经典类的写法:
class A():
pass
这两种类在除了在多继承的时候,继承查找顺序算法不一致外,并没有其他区别,这里就不再详细说明。当然在python3中已经不存在经典类。
2、类的继承关系
所有的新式类继承自object
所有的经典类继承自 空

每一个类(注意这里是类)都有一个__bases__属性,表示这个类的基类,我们可以用 CLASS.__base__查看一下常用的类:
print bool.__bases__
print int.__bases__
print float.__bases__
print set.__bases__
print list.__bases__
print dict.__bases__
print tuple.__bases__
print str.__bases__
print basestring.__bases__
print A.__bases__
输出结果:
(<type 'int'>,)
(<type 'object'>,)
(<type 'object'>,)
(<type 'object'>,)
(<type 'object'>,)
(<type 'object'>,)
(<type 'object'>,)
(<type 'basestring'>,)
(<type 'object'>,)
(<type 'object'>,)
可以看到,常用类都是继承自object的,也就是说我们常用的都是新式类。object的基类和经典类的基类又是什么?
class B():
pass print B.__bases__
print object.__bases__
输出结果:
()
()
由此可见,新式类和经典类是类继承关系链中的顶层。
3、对象的__class__属性
对于任何一个对象,都可以用__class__属性查看对象所属的类
print (33).__class__
print (33.3).__class__
print (True).__class__
print (['', '']).__class__
print ((['', ''])).__class__
print ({'a': 'b'}).__class__
print ((3,)).__class__
print ('str').__class__
输出结果:
<type 'int'>
<type 'float'>
<type 'bool'>
<type 'list'>
<type 'list'>
<type 'dict'>
<type 'tuple'>
<type 'str'>
小结:到此我们已经把类的继承关系弄清楚了。
1、Python2.x 有两种类,经典类和新式类
2、查看类的基类用__bases__
3、查看对象的所属类用__class__
4、Python中的type
在讲解type之前,先来看一组例子:
a = A()
print type(33)
print type(33.3)
print type(a) print type(int)
print type(float)
print type(A)
print type(object) print type(B)
输出结果:
<type 'int'>
<type 'float'>
<class '__main__.A'>
<type 'type'>
<type 'type'>
<type 'type'>
<type 'type'>
<type 'classobj'>
1、首先看前三个,对三个实例对象调用type()方法,输出结果为三个对象的类。
2、接下来四个,对类型调用type()方法,输出结果均为<type ‘type’>
3、最后一个经典类,输出是<type ‘classobj’>
这里最好理解的方法就是,type()返回的是 对象或者类的创建者:
1、 33的创建者是int,33.3的创建者是float,a的创建者是A。
2、所有新式类的创建者为 type
3、经典类的创建者为classobj
在面向对象的说法中,我们最常听到就是一切皆对象。实例是对象,类其实也是对象,实例是由类创建的,那么类又是由谁创建的,Python类的type类作用就在于此,type类是Python里的元类,元类的功能就是创建新的类型。所有的新式类都由元类创建。
特殊的经典类的创建者是classobj。它也是一种元类。
type()函数就是拿到类或者对象的创建者。
提示:如果对元类不了解的可以查看Python相关元类的知识。
Python 中的type和object详解的更多相关文章
- python中的type和object详解
关于这篇博客 这篇博客主要描述Python的新风格对象(new-style objects),如下: <type 'type'>和<type 'object'>分别是什么? 用 ...
- type和object详解
python中的type和object详解 关于这篇博客 这篇博客主要描述Python的新风格对象(new-style objects),如下: <type 'type'>和<t ...
- python中argparse模块用法实例详解
python中argparse模块用法实例详解 这篇文章主要介绍了python中argparse模块用法,以实例形式较为详细的分析了argparse模块解析命令行参数的使用技巧,需要的朋友可以参考下 ...
- **Python中的深拷贝和浅拷贝详解
Python中的深拷贝和浅拷贝详解 这篇文章主要介绍了Python中的深拷贝和浅拷贝详解,本文讲解了变量-对象-引用.可变对象-不可变对象.拷贝等内容. 要说清楚Python中的深浅拷贝,需要 ...
- python中requests库使用方法详解
目录 python中requests库使用方法详解 官方文档 什么是Requests 安装Requests库 基本的GET请求 带参数的GET请求 解析json 添加headers 基本POST请求 ...
- python中的subprocess.Popen()使用详解---以及注意的问题(死锁)
从python2.4版本开始,可以用subprocess这个模块来产生子进程,并连接到子进程的标准输入/输出/错误中去,还可以得到子进程的返回值. subprocess意在替代其他几个老的模块或者函数 ...
- 第7.15节 Python中classmethod定义的类方法详解
第7.15节 Python中classmethod定义的类方法详解 类中的方法,除了实例方法外,还有两种方法,分别是类方法和静态方法.本节介绍类方法的定义和使用. 一. 类方法的定义 在类中定 ...
- Python中random模块生成随机数详解
Python中random模块生成随机数详解 本文给大家汇总了一下在Python中random模块中最常用的生成随机数的方法,有需要的小伙伴可以参考下 Python中的random模块用于生成随机数. ...
- Python中的变量和作用域详解
Python中的变量和作用域详解 python中的作用域分4种情况: L:local,局部作用域,即函数中定义的变量: E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部 ...
随机推荐
- Phoenix实现分页查询
1 利用offset语法,官网的语法 ELECT * FROM TEST LIMIT 1000; SELECT * FROM TEST LIMIT 1000 OFFSET 100; 2 公式如下 SE ...
- Oracle【子查询】
Oracle子查询:当一个查询依赖于另外一个查询的结果的时候,就需要使用子查询.单行子查询 :筛选条件不明确,需要执行一次查询且查询结果只有一个字段且字段值只有一个.注意:where子句中允许出现查询 ...
- Pysnooper 一款大受欢迎的Debug模块
Github地址 安装 PIP pip install pysnooper import pysnooper @pysnooper.snoop() def number_to_bits(number) ...
- mysql服务启动失败
#!/bin/bash . /etc/rc.d/init.d/functions MPORT=`netstat -atnlp | grep 3306| wc -l` MPROC=`ps ax | gr ...
- IntelliJ IDEA 如何设置代码提示和代码模板
在编写java代码时如何设置不分大小写提示和设置快捷输出模板代码 首先设置不分大小写,settings-Editor-General-CodeCompletion 将红框的Match case取消打勾 ...
- java中创建List<>类型的数组-20171028
遇到了一个问题需要创建List类型的数组,但是在网上查了很多资料,好像发现并不能创建泛型的数组,于是改用Hashmap实现同等的功能. 代码如下: Map<String,List<AddL ...
- Linux常用命令之info、cal、echo命令
info命令,是Linux下info格式的帮助指令 执行man info可以查看info命令的 语法 info(选项)(参数) 选项 -d:添加包含info格式帮助文档的目录: -f:指定要读取的in ...
- White-Label Apps
转载:https://www.vendasta.com/blog/white-label-apps What are white-label apps? White-label apps are ap ...
- 【JZOJ5605】【NOI2018模拟3.26】Arg
题目描述 给出一个长度为 m 的序列 A, 请你求出有多少种 1...n 的排列, 满足 A 是它的一个 LIS. 解题思路 如何求出一个序列的LIS? 对于二分的方法,每次插入一个数,将它放到第一个 ...
- js文件下载
因为公司后端忙得无法给批量下载的api,就我们前端自己把多张图片打包成zip下载,zip打包我们用的是jszip,下面是js实现下载的三种方法: 利用HTML download 属性 var a = ...