https://docs.python.org/3/library/functions.html#type
1.type(object)
class type(object)
返回一个对象的类型,等价于object.__class__
The isinstance() built-in function is recommended for testing the type of an object, because it takes subclasses into account.
type和isinstance
type不会认为子类是父类的类型,不会考虑继承关系。isinstance会任务子类是父类的类型,考虑继承关系。
type为对象的顶点,所有对象都创建自type。
object为类继承的顶点,所有类都继承自object。
python中万物皆对象,一个python对象可能拥有两个属性,__class__
和 __base__
,__class__
表示这个对象是谁创建的,__base__
表示一个类的父类是谁。
2.type(name, bases, dict)
class type(name, bases, dict)
动态的创建一个类,等同于写class
,name
就是__name__
类的名称属性,base
就是__base__
基类,dict
就是__dict__
,类的属性和方法
name:类名
bases:父类的元组
dict:类属性的方法和值
下面创建类的方法是等同的
class X:
a = 1
X = type('X', (object,), dict(a=1))
使用type
创建类,本质上和写class
没有区别
def say(self): # 定义一个函数,一会通过type放入类中
print("hello")
Person = type("Person",(object,),dict(say = say, name = "wang")) #使用 type() 函数创建类 另外注意,元组只有一个元素时`,`号不能省略
person = Person() # 实例化对象
person.say()#调用 say() 方法和 name 属性
print(person.name)
参考:
http://c.biancheng.net/view/2292.html
https://www.cnblogs.com/mxuanli/p/9805122.html