我在野外发现了这段代码(在这里被简化了),我想知道这是否被认为是一种好的实践,也就是说,为了更新属性(并减少冗长?)而制作一个浅层副本(在本例中是对象的属性).我问是因为这不是我第一次看到这种模式,它让我有点不安.
class DrawingBoard:
def __init__(self):
self.raw_points = []
def add_point(self, x, y):
Point = collections.namedtuple('Point', ['x', 'y'])
points = self.raw_points
points.append(Point(x, y))
if len(points) > ......:
# DO SOMETHING
board = DrawingBoard()
for x in np.arange(0, 10, 0.1):
board.add_point(x, np.sin(x))
对于上下文,当添加了一定数量的点时,实际的类正在执行某些操作.在我第一次阅读时,我错过了这次更新(the code is a fair bit more complex).
我的问题是:是不是只有我不习惯这种模式,这仅仅是一个不那么冗长与清晰的问题?还是我还漏掉了什么我可以看到,如果我们更新多个属性,它可能会变得非常冗长,但我发现调用self.raw_points.append(Points(x,y))
而不是points.append(Points(x,y))
要清楚得多.