我在python中嵌入了代码。 我需要访问对象的属性。
objectA.attribute_x
比objectA.get_attribute_x()
更快?
从OO的角度来看,使用getter似乎是正确的做法。 但哪种方式在计算上更便宜/更快?
答案 0 :(得分:2)
在大多数情况下,object.attribute
是一个简单的词典键查找,而object.get_attribute_a
是字典查找 + 调用该函数的任何开销。
所以是的,功能版本较慢,通常不会以您习惯的形式使用; properties
是管理属性的标准方法(同样,它们在返回之前管理属性的事实使它们变慢)。
答案 1 :(得分:1)
让我们找出来!函数调用似乎有更多的工作,但让我们让timeit
有一个裂缝:
from timeit import timeit
class Foo():
def __init__(self):
self.bar = "bar"
self.baz = "baz"
def get_baz(self):
return self.baz
print(timeit('foo.bar', setup='import __main__;foo=__main__.Foo()', number=10000000))
print(timeit('foo.get_baz()', setup='import __main__;foo=__main__.Foo()', number=10000000))
我的计算机上有一次运行:
1.1257502629887313
4.334604475006927
直接属性查找是明显的赢家。