关于python3.0的类和类型的关系

一句话,在python3.0中,类就是类型,类型就是类。
在python中,平常你认为的一些是内置函数的如list(),str()等,其实都是一些内置的类,也就是说,你在使用它的时候都是创建该类的实例。

python3.x所有的类都是新式类(隐式的继承了object元类),新式类是相对于python2.x的经典类说的(显示继承object,也可以是新式类)。新式类有一些变化,今天主要说的是新式类中的类和类型

type()是什么?
你可能会说是一个内置的函数,返回参数的类(型)。
这么说也对,也不对。
首先,对于经典类来说,它确实是内置的函数,用于返回类型,但在python3.x中,type()是一个类,返回一个实例,实例就是参数的类有点拗口,但就只能这么表述。来看一个例子。

class Ex_cls:
    pass
# 创建一个类
instance = Ex_cls()
# 一个类的实例
# 当我们用type返回实例的类型的时候
print(type(instance))
# 输出:<type 'Ex_cls'>
# 这就是类型既类
# 那么对Ex_cls求出类型呢?
print(type(Ex_cls))
# 输出:<type 'type'>
# 这就是所有的type是一个超级大的超类,其他的类都是他的子类
# 我们再求出type的类型呢
print(type(type))
# 输出:<type 'object'>
# 顶级元类是object,也就是我们所说的所有的新式类都继承自这个元类object

看懂了没有,一句话,在新式类中,类就是类型,类型就是类
你用 isinstance()也是一样的

isinstance(x_cls,object)
# 输出:True
# 你用任意的类(数据结构)与object作比较,结果都是true

这就是新式类中关于类和类型的关系!类 = 类型

猜你喜欢

转载自blog.csdn.net/killeri/article/details/80479535