python中object如何更改_Python 中的type和object详解

1、python中的类

Python2.x 中的类分为两种,一种是所有继承自object的新式类,另外一种是经典类classobj,

新式类的写法:

classA(object):pass

经典类的写法:

classA():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__

输出结果:

(,)

(,)

(,)

(,)

(,)

(,)

(,)

(,)

(,)

(,)

可以看到,常用类都是继承自object的,也就是说我们常用的都是新式类。object的基类和经典类的基类又是什么?

classB():pass

print B.__bases__

print object.__bases__

输出结果:

()

()

由此可见,新式类和经典类是类继承关系链中的顶层。

3、对象的__class__属性

对于任何一个对象,都可以用__class__属性查看对象所属的类

print (33).__class__

print (33.3).__class__

print (True).__class__

print (['1', '2']).__class__

print ((['1', '2'])).__class__

print ({'a': 'b'}).__class__

print ((3,)).__class__

print ('str').__class__

输出结果:

小结:到此我们已经把类的继承关系弄清楚了。

1、Python2.x 有两种类,经典类和新式类

2、查看类的基类用__bases__

3、查看对象的所属类用__class__

4、Python中的type

在讲解type之前,先来看一组例子:

a =A()print type(33)print type(33.3)printtype(a)printtype(int)printtype(float)printtype(A)printtype(object)print type(B)

输出结果:

1、首先看前三个,对三个实例对象调用type()方法,输出结果为三个对象的类。

2、接下来四个,对类型调用type()方法,输出结果均为

3、最后一个经典类,输出是

这里最好理解的方法就是,type()返回的是 对象或者类的创建者:

1、 33的创建者是int,33.3的创建者是float,a的创建者是A。

2、所有新式类的创建者为 type

3、经典类的创建者为classobj

在面向对象的说法中,我们最常听到就是一切皆对象。实例是对象,类其实也是对象,实例是由类创建的,那么类又是由谁创建的,Python类的type类作用就在于此,type类是Python里的元类,元类的功能就是创建新的类型。所有的新式类都由元类创建。

特殊的经典类的创建者是classobj。它也是一种元类。

type()函数就是拿到类或者对象的创建者。

提示:如果对元类不了解的可以查看Python相关元类的知识。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值