以下是否在
Python中有任何实际用途?
>>> def a(n):
print(n)
return a
甚至:
>>> def a(n):
print(n)
return b
>>> def b(n):
print(n+3)
return a
最佳答案 这是常见的做法,可能与功能不同,但在OOP中广泛使用.基本上,每当您不使用getter(返回对象属性的方法)或返回特定内容时,返回对象本身都没有成本.但它允许压缩代码,如同
house = House()
exits = house.setDoors(2).setWindows(4).getNumberOfEmergencyExitsRequired()
或者,你必须写
house = House()
house.setDoors(2)
house.setWindows(4)
exits = house.getNumberOfEmergencyExistsRequired()
它不是世界末日,但它允许在不降低可读性的情况下压缩代码,因此它是一件好事.
举个例子
第一个是直接和类似的,它允许压缩代码.第二个实际上不是我个人会做的事情,因为
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()