在当前类查找某个属性 getattr 效率对比字典 2018-0

2018-09-29  本文已影响11人  夏树的宝马

通过测试对比 在当前类实例中查找某个属性
1.使用object.dict.get()与getattr():
1.1.查找存在的属性时,这两种方法效率相差不大
1.2.当查找不存在的属性时,发现object.dict.get()这种方式要快些

import random
class test_getattr():
    def __init__(self):
        self.num=0

    def set_random_prop(self,times=1000):
        for x in  range(times):
            random_name=''.join(random.choice('qwertyuisdfghjkxcvbnmbn') for i in range(times))
            setattr(self,random_name,random_name)

    def get_prop_time(self,prop=None,times=100):
        start=time.time()
        while times>0:

            getattr(self,prop,False)
            # self.__dict__.get(prop)
            times -=1
        print(time.time()-start)

mytest=test_getattr()
mytest.set_random_prop()
mytest.get_prop_time(prop='sadf',times=10000000)

如图:

getattr查找存在的属性 object.__dict__.get()查找存在的属性 getattr查找不存在的属性 object.__dict__.get()查找不存在的属性
上一篇 下一篇

猜你喜欢

热点阅读