在 Python 中,一切皆对象。字符串,列表,字典,函数是对象,类也是一个对象,因此你可以:
如何动态创建类呢,接下来来看下。
在日常使用中,我们经常使用 object 来派生一个类,事实上,在这种情况下,Python 解释器会调用 type 来创建类。
>>> type(11)
<class 'int'>
>>> type(True)
<class 'bool'>
type 除了可以返回对象的类型,它还可以被用来动态地创建类(对象)
使用 type 来创建类(对象)的方式如下:
type(类名, 父类的元组(针对继承的情况,可以为空),包含属性和方法的字典(名称和值)) 最简单的情况
假设有下面的类:
class Foo(object):
pass
现在,我们不使用 class 关键字来定义,而使用 type,如下:
Foo = type('Foo', (object, ), {})
使用 type 创建了一个类对象
上面两种方式是等价的。我们看到,type 接收三个参数:
在上面,我们使用 type() 创建了一个名为 Foo 的类,然后把它赋给了变量 Foo,我们当然可以把它赋给其他变量,但是,此刻没必要给自己找麻烦。
>>> Foo = type('Foo', (object, ), {})
>>> print(Foo)
<class '__main__.Foo'>
>>> print(Foo())
<__main__.Foo object at 0x7f8cfef87fd0>
动态创建一个类
def age(self):
print('age')
print(self.foo)
foo = type('Foo', (object, ), {'foo': True, 'greet': age})
fo=foo()
print(fo.greet())