python类中最大的_Python 对类好像没有太大的要求啊

xpresslink

2019-04-12 16:16:40 +08:00

@GeruzoniAnsasu

关于你的这个问题确实能把人绕晕了。我以前写一篇博客详细说明过。

Python 中所有东西都是对象,比较特殊的是:object 和 type 是 python 中的两个源对象,它们是互相依赖对方来定义,不能分割来说,就如同讨论“先有鸡还是现有蛋”,一样让人蛋疼。

先介绍有两个黑魔法在后面要用到:

obj.__bases__ 指这个对象的父类,就是说从谁继承来的。

obj.__class__ 指这个对象的类型,类的类型是 type

Python 的面向对象系统有两条线索。

1.继承关系也就是父类和子类的关系( the subclass-superclass relationship ),以 object 为起点;

所有对象的父类是 object,因此 object 是没有父类的。

>>> object.__bases__

()

type 也是 object 的子类

>>> issubclass(type, object)

True

>>> type.__bases__

(,)

2.类型和实例之间的关系( the type-instance relationship ),以 type 为起点。

type 是自身的实例,或说 type (对象 object )的 class (类型 type )是 type

>>> isinstance(type, type)

True

>>> type(type)

>>> type.__class__

就连 object 都是 type 的实例

>>> isinstance(object, type)

True

最后总结一下:

type 是一个比较特殊的类,这里引出另一概念元类,普通类实例化出来一个对象,但是元类实例化出来的是一个类,

int、float、str、boolean、tuple、dict、set 等内置的数据类型其实也就是内置的类都是 type 实例。

>>> isinstance(int, type)

True

>>> int.__class__

>>>

object 是所有对象(包括类对象)的父类,int、float、str、boolean、tuple、dict、set 内置类都是 object 子类。

>>> int.__bases__

(,)

>>> issubclass(int, object)

True

---------------------

作者:混沌鳄鱼

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值