python类反射

起因

最近一直在写数据构造器,所有的虚假数据均调用的是一个Methor类,需要用到类反射。

采取的做法

方法一

为了方便,采取了eval()将组合成的方法名字符串运行成函数,刚开始很正常,但是一看速度,心态炸了啊!!!!!平均需要0.03s一次…

class Methors(object):
    def test(self):
        print("test")
eval(f"Methors().test()")

方法二

采用正常的类反射来做,速度翻了几百倍,终于舒服了,现在数据能够每秒几万条了…

class Merhors(object):
    def test(self):
        print("test")
getattr(Methor(), 'test')()

结论

虽然两种方法都可以实现,但是效果差别很多,类似的还有local()用法。

具体原理目前不明,这几天没时间探究,改天再来。个人猜测是前者涉及到转换数据类型,后者估计是直接尝试调用,然后返回调用地址(瞎猜…)


  转载请注明: Tomorrow python类反射

 本篇
python类反射 python类反射
起因 最近一直在写数据构造器,所有的虚假数据均调用的是一个Methor类,需要用到类反射。 采取的做法方法一 为了方便,采取了eval()将组合成的方法名字符串运行成函数,刚开始很正常,但是一看速度,心态炸了啊!!!!!平均需要0.03s
2019-06-24
下一篇 
findMedianSortedArrays findMedianSortedArrays
题目 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 你可以假设 nums1 和 nums2 不会同时为空。 DEMO num
2019-06-10
  目录