一文带你理清楚python type和object的区别

本文详细介绍了Python中object和type的区别。object是所有类的基类,包含多个内置方法,Python3.x中所有类默认继承object。type被称为元类,是用于创建类对象的类,所有对象都有__class__属性指向其类,而类对象的类是type。type自身也是由元类type创建,形成一种循环继承关系。总结来说,type和继承自object的类在实例化和继承角度上都有object的特性,新式类因继承object具有更多功能。

1,object

我们可以通过__bases__获取类的父类:

class Animal:
    pass
# 单继承语法
class Dog(Animal):
    pass
print(Animal.__bases__)
print(Dog.__bases__)

(<class 'object'>,)
(<class '__main__.Animal'>,)

我们查看object这个类的源码,里面封装了很多方法,那么Animal这个类就可以直接拿来用
在python3.x版本,创建类默认继承object类;
包括系统的内置的类,比如str int都是继承object这个类,bool类型的父类是int

print(int.__bases__)
print(str.__bases__)
print(bool.__bases__)

(<class 'object'>,)
(<class 'object'>,)
(<class 'int'>,)

2,type

a:int  = 10

在python中万物皆对象,10也是一个对象,10的类的是int,int的类是type,把type称作元类
元类是生产类对象的类
我们想查看一个对象的类是什么,通过__class__方法:
d是实例对象,d的类是Dog,而Dog是类对象,它的类是type,type也是一个对象

class Animal:
    pass
# 单继承语法
class Dog(Animal):
    pass
d = Dog()
print(d.__class__)
print(Dog.__class__)
print(Animal.__class__)
print(type.__class__)
print(object.__class__)

<class '__main__.Dog'>
<class 'type'>
<class 'type'>
<class 'type'>
<class 'type'>

我们可以发现,object这个类对象也是由type这个元类创建出来的
我们查看type的源码发现:

class type(object):
    """
    type(object_or_name, bases, dict)
    type(object) -> the object's type
    type(name, bases, dict) -> a new type
    """

type这个元类又继承了object这个类

3,总结

流程图:
在这里插入图片描述
从实例化的角度来看:
type这个类创建了很多个类对象包括str int object和它自己
从继承的角度来看:
dog这个类对象继承至object;type这个类对象也继承至object
所以type和dog类对象就会拥有object类的一些特性
所以新式类会有更多的功能,因为它继承了object这个类;经典类因为没有继承object,所以功能会更少一些

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值