1.元类:动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的,不是定义死了,而是可以随时随地添加的
type():查看一个类型或变量的类型又可以创建出新的类型
class Hello(object):
def hello(self, name='world'):
print('Hello, %s.' % name)
h = Hello()
h.hello()
Hello, world.
print(type(Hello))
<class 'type'> #Hello是一个class,它的类型就是type
print(type(h))
<class 'hello.Hello'> #h是一个实例,它的类型就是class Hello
def fn(self, name='world'): # 先定义函数
print('Hello, %s.' % name)
Hello = type('Hello', (object,), dict(hello=fn)) # 创建Hello class
h = Hello()
h.hello()
Hello, world.
print(type(Hello))
<class 'type'>
print(type(h))
<class '__main__.Hello'>
type()创建class要传入三个参数:1.class的名称,2.继承的父类集合(只有一个父类时,别忘了tuple的单元素写法即后面加逗号),3.class的方法名称与函数绑定(列中绑定fn)
大部分情况不要type()方法创立class,type()说明了动态的特点