python类的工作机制_元类?

转自https://www.liaoxuefeng.com/wiki/1016959663602400/1017592449371072

python作为一种解释型动态语言,对象的调用是动态的,而不是经过一次就编译完成的。对class来讲,通过type()函数创建的类和直接写class是完全一样的,因为Python解释器遇到class定义时,仅仅是扫描一下class定义的语法,然后调用type()函数创建

>>> from hello import Hello
>>> h = Hello()
>>> h.hello()
Hello, world.
>>> print(type(Hello))
<class 'type'>
>>> print(type(h))
<class 'hello.Hello'>

等价于下面方式的定义方式:

def fn(self, name='world'): # 先定义函数
...     print('Hello, %s.' % name)
Hello = type('Hello', (object,), dict(hello=fn)) # 创建Hello class

要创建一个class对象,type()函数依次传入3个参数:
class的名称;
继承的父类集合,注意Python支持多重继承,如果只有一个父类,别忘了tuple的单元素写法;
class的方法名称与函数绑定,这里我们把函数fn绑定到方法名hello上。

posted @ 2020-04-21 17:04  Bravo_Jack  阅读(215)  评论(0编辑  收藏  举报