在C++,JAVA,C#等面向对象语言中, 类的实例 是 一个对象

在Python中,  类的实例 是 一个对象,这个没有问题,object类是一切类的父类,这也没什么问题。

 

但是, type类有点元类的意思,我个人理解为   int,float,object , Animal等类 是   type元类的   一个实例(是一种类型)

 

#一切皆对象


print(object.__base__)   #object类没有父类   None
print(object.__class__)  #object类  的元类是 type

print(type.__base__)    #type元类   的父类是  object
print(type.__class__)   #type元类   的元类是  type


class Animal(object):   #自定义类
 pass

print( Animal.__base__)   #Animal类   的父类是  object
print( Animal.__class__)  #Animal类   的元类是  type


print("-----------------------------------")
# <class 'type'>是所有类型的类 ,元类


print(type(int))          #<class 'type'>
print(type(float))        #<class 'type'>
print(type(complex))      #<class 'type'>
print(type(object))       #<class 'type'>
print(type(tuple))        #<class 'type'>
print(type(list))         #<class 'type'>
print(type(dict))         #<class 'type'>
print(type(type))         #<class 'type'>
print(type(Animal))       #<class 'type'>

print("-----------------------------------")

# 各种类型的实例

print(type(123))                  #<class 'int'>
print(type(0.123))                #<class 'float'>
print(type(complex(1,2)))         #<class 'complex'>
print(type(object()))             #<class 'object'>
print(type((1,2,3)))              #<class 'tuple'>
print(type([1,2,3]))              #<class 'list'>
print(type({"1":11,"2":"22"}))    #<class 'dict'>

a=Animal()
print(type(a))                    #<class 'Animal'>

def fun():
 pass
print(type(fun))                  #<class 'function'>

运行截图:

 

Python 的 object类、type元类

相关文章: