这是一种常见的实践,可能不太适用于函数,但在OOP中得到了广泛的应用。基本上,无论何时不使用getter(一种返回对象属性的方法)或返回特定的东西,返回对象本身就不需要花费成本。但它允许压缩代码,如house = House()
exits = house.setDoors(2).setWindows(4).getNumberOfEmergencyExitsRequired()
而另一方面,你必须写
^{pr2}$
这不是世界末日,但它允许在不降低可读性的情况下压缩代码,因此这是一件好事。
以您的例子
第一种是直接的,类似的,它允许压缩代码。第二个事实上不是我个人愿意做的,因为a(3)(5) == a(3); b(5)
在这个简单的例子中,它没有理由这样做,并且可能会令人困惑。
返回OOP
无论如何,在OOP中,你当然可以想象得到class House(object):
def addDoorByColor(self, doorColor):
door = new Door()
door.setColor(doorColor)
self.door = door
return self.door
在哪里house = House();
house.addDoorByColor('red').open()
会“开门”。这可能不是这个场景的最佳示例,但是我现在提出的一些东西只是为了说明返回“其他对象”的潜在用途。然而,最后一个案子可能最好由door = new Door('red')
house.addDoor(door)
door.open()