我们在 数据类型 有稍微的提及过 type
,它用于类型检测。
# 字符串类型
type('abc') # <class 'str'>
# type 类型
type(str) # <class 'type'>
换个角度
class A():
pass
>>> a = A()
>>> type(a)
"<class '__main__.A'>" # a 来自于 A
>>> type(A)
"<class 'type'>" # 而 A 来自于 type
>>> type(type)
"<class 'type'>" # type 也自于 type
通过上面的关系,展示了 A
创造了a
,type
创造了A
,type
自己创造了自己,所有其实 type 就是 Python 的 万类之组
。
type
可用做于类型检测,还能动态的创建类
,因为本来所有的类就是经过它的手。
动态
的意思就是能用代码根据配置自动生成。
# 动态创建一个白人的类
# 参数1、类名
# 参数2、父类
# 参数3、用字典的形式写入属性和方法
>>> Caucasian = type('Caucasian', (object,), {'color':'write', 'say': lambda x : 'haaa!'})
# 实例
>>> Job = Caucasian()
>>> Job.color
'write'
>>> Job.say()
'haaa'