VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > 简明python教程 >
  • PythonI/O进阶学习笔记_7.python动态属性,__new__和__init__和元类编程(下)

content:

上:

1.property动态属性

2.__getattr__和__setattr__的区别和在属性查找中的作用

3.属性描述符 和属性查找过程

4.__new__和__init__的区别

下:

5.什么是元类和自定义元类

6.用元类实现orm

=====================

五.什么是元类和自定义元类

1.什么是元类

在理解元类的时候,需要具备对python中类和实例的创建的概念有所了解,需要复习该系列的3中的类和对象那一章。了解类的创建、实例的创建、type和父类的继承顺序等。

在类的相关章节中也提到了,元类就是类的类。也就是元类就是负责创建类的一种东西。可以理解为,元类就是负责生成类的。而 type 就是内建的元类。也就是 Python 自带的元类。

 

2.如何自定义使用元类

a.模拟python中动态创建类

既然我们知道python中一切皆对象,类也是,所以类也是可以被创建的,那么我们自己是新一个传入类名,并且动态生成类的方法:

传入类名,在create_class中返回同名字的类名。

 

b.用type来更加灵活的创建类

但是实际上在a中创建类还是比较蠢的。要在方法中去一个个判断名字。

-  用type来动态创建类:

直接输入类名,就可以返回一个类。后面的参数要求:必须传递第一个参数,为类。并且传递进去的函数不加括号,为直接的函数对象。

这样的类就像是class User: pass 没有自定义的属性和方法。

 

-  创建传递类的属性和方法:

创建类的属性:
 
传递类的方法:先创建一个函数,函数必须传递一个参数,为类。并且传递进去的函数不加括号,为直接的函数对象。

相关教程