Python 的内置 type() 函数返回对象所属的类。在 Python 中,类、内置类或用户定义的类都是 class 类型的对象。
例
class myclass:
def __init__(self):
self.myvar=10
return
obj = myclass()
print ('class of int', type(int))
print ('class of list', type(list))
print ('class of dict', type(dict))
print ('class of myclass', type(myclass))
print ('class of obj', type(obj))
它将产生以下输出 -
class of int <class 'type'>
class of list <class 'type'>
class of dict <class 'type'>
class of myclass <class 'type'>
class of list <class 'type'>
class of dict <class 'type'>
class of myclass <class 'type'>
type() 具有三个参数版本,如下所示 -
语法
newclass=type(name, bases, dict)
使用上述语法,可以动态创建类。function 类型的三个参数是 −
- name − 成为新类__name__属性的类的名称
- bases − 由父类组成的 Tuples。如果不是派生类,则可以为空
- dict − 包含属性和方法及其值的新类的字典形成命名空间。
创建匿名类
我们可以使用上述版本的 type() 函数创建一个匿名类。name 参数是一个空字符串,第二个参数是一个类(对象类)的元组(请注意,Python 中的每个类都是从 object class 继承的)。我们添加某些实例变量作为第三个参数字典。我们暂时将其留空。
anon=type('', (object, ), {})
创建匿名对象
要创建此匿名类的对象 -
obj = anon()
print ("type of obj:", type(obj))
结果显示该对象属于匿名类
type of obj: <class '__main__.'>
匿名类和对象示例
我们还可以动态添加实例变量和实例方法。看看这个例子 -
def getA(self):
return self.a
obj = type('',(object,),{'a':5,'b':6,'c':7,'getA':getA,'getB':lambda self : self.b})()
print (obj.getA(), obj.getB())
它将产生以下输出 -
5 6