DAY3-Python学习笔记

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()说明了动态的特点

metaclass(元类):控制类的创建行为

 

 

猜你喜欢

转载自www.cnblogs.com/xussi/p/9051275.html