元类案例:对方法调用次数进行计数
(Count Method Calls Using a Metaclass)
在本节,我们详细说明一个元类,它将装饰子类的方法。 装饰器返回的装饰函数使得可以计算子类的每个方法被调用的次数。
通常,这是profiler期望的任务之一。 因此,可以将此元类用于简单的分析目的。 当然,你也可以进一步扩展这个元类来完成其它的分析任务。
在深入探讨问题之前,我们介绍如何访问类的属性。 可以使用以下办法获取类的所有非私有属性(在我们的例子中为random类)的列表。
import random
cls = "random" # name of the class as a string
all_attributes = [x for x in dir(eval(cls)