我的应用程序中需要很多小对象。它们必须是不可变的,并且在我设置新属性时返回一个新实例。在
我找到了很多方法来禁用obj.prop = newValue
行为,现在我需要这样做:
newObj = obj.setTitle(title)
newObj = obj.setDirection(x, y)
newObj = obj.incrementCount()
newObj = obj.swap()
目前我这样做:
^{pr2}$这个性能好吗?有没有更快的方法可以在某些属性发生更改的情况下返回对象的克隆?在
我使用__slots__
。我的对象具有预定义的属性。我没有通用的.set(prop, value)
方法
(欢迎使用Python 3.5+)
{1}而不是使用^ 1>方法来获得不变性:
我已经对这两个类中
^{pr2}$swap()
方法的性能进行了基准测试,从namedtuple
派生的类在Python3中大约快3-4倍。以下是基准代码:结果:
通过为对象定义自定义复制方法,可以显著提高性能:
测试:
^{pr2}$结果:
相关问题 更多 >
编程相关推荐