目录
类元编程是指在运行时创建或定制类的技艺。在Python 中,类是一等对象,因此任何时候都可以使用函数新建类,无须使用class关键字。类装饰器也是函数,不过能够审查、修改,甚至把被装饰的类替换成另一个类。最后元类是类元编程最高级的工具:使用元类可以创建具有某种特质的全新类,例如前面讲过的抽象类。
身为对象的类
与Python 中的很多程序实体一样,类也是对象。Python数据模型为每个类定义了很多属性,除了__class__、name 和 mro。还有以下标准属性。
cls.bases: 由类的基类构成的元组。
cls.qualname: 类或函数的限定名称,即从模块的全局作用域到类的点分路径。在一个类中定义另一个类是会用到这个属性。例如,Django模型类Ox 内部有一个名为Meta的类。Meta类的__qualname__是Ox.Meta,但是__name__只是Meta.
cls.subclasses:这个方法会返回包含类的直接子类的列表,其实现是使用弱引用、以防止在超类和子类之间出现循环引用(子类在__bases_属性中存储指向超类的强引用)。这个方法返回的列表中是内存里现存的子类,不含尚未导入的模块在中的子类。
type:内置的类工厂函数
以下面这个简单的类为例
class MyClass(MySuperClass,MyMixin):
x = 42,
def x2(self):
return self.x * 2
使用type 构造函数,可以在运行时创建MyClass类,如下所示。
MyClass = type('MyClass', (MySuperClass,MyMixin),{'x':42, 'x2': lambda self: self.x * 2},)
标签:__,类元,子类,编程,Pyhton,Meta,MyClass,type
From: https://www.cnblogs.com/czzz/p/18153868