我正在扩展一位前同事的代码(Python3)并亲自找到那些重复self.__local_object.x=some_result
烦人且阻碍可读性的内容。即而不是
self.__local_node.sign("computing partition for joining node %f<?<%f"%(
self.__local_node.partition_id,next_neighbour.partition_id))
partition_id = 0
if(next_neighbour != self.__local_node):
partition_id = PartitionID.gen_btw(self.__local_node.partition_id, next_neighbour.partition_id)
我宁愿使用
ln=self.__local_node
ln.sign("computing partition for joining node %f<?<%f"%(
ln.partition_id,next_neighbour.partition_id))
partition_id = 0
if(next_neighbour != ln):
partition_id = PartitionID.gen_btw(ln.partition_id, next_neighbour.partition_id)
然而,我还没有使用Python开发经验,如果我为引用的对象引入这样的(希望的)本地别名,我可能会错过一个让进一步维护成为噩梦的黄金指南。
PS:不,self.__local_node
的值不会在该代码中的任何地方改变。
答案 0 :(得分:2)
由于local_node
和next_neighbour
是对称的,因此将代码提取到单独的方法中可能是个好主意:
def compute_partition(self, a, b):
a.sign("computing partition for joining node %f<?<%f" % (
a.partition_id, b.partition_id))
partition_id = 0
if a != b:
partition_id = PartitionID.gen_btw(a.partition_id, b.partition_id)
etc...
....
self.compute_partition(self.local_node, next_neighbour)
在我看来,更具可读性。此外,使用双下划线必须有很好的理由(或借口)。检查是否可以在你的情况下摆脱它们。
答案 1 :(得分:0)
如果你真的没有改变这个值,只能分配和访问它的属性,这应该是完全可以的。
答案 2 :(得分:0)
如果 __ local_node 对象的所有成员都使用属于此处引用的类 self ,我不会感到惊讶,这是副本的产品并粘贴横冲直撞。