考虑一个类的实例:
class Car(object):
def __init__(self):
self.engine = None
以及修改该实例的函数:
def add_engine(car):
car.engine = 'V6'
Python 没有指出参数将被修改的隐式技术。我能想到的最佳解决方案是返回修改后的对象(即使它与作为参数传递的对象相同):
def add_engine(car):
car.engine = 'V6'
return car
您将如何解决这个设计问题?
--
各位,非常感谢您的回答。你的建议帮助清理了我脑海中的困惑 :)
请您参考如下方法:
FWIW,我注意到在 Python 世界中,具有副作用的函数/方法(例如您所询问的那个)总是返回 None。 (这是隐式完成的,通过使用不带参数的 return 语句,或者干脆完全省略 return。)
例如,比较 sorted 内置函数,它返回一个新列表(当然是排序的),而 list.sort 方法返回 无,因为在这种情况下列表是就地排序的。类似的情况适用于 reversed 内置函数和 list.reverse 方法。
因此,IMO,只要让你的函数(隐含地)返回 None 就足以提醒用户该函数有副作用(因为没有副作用,一个函数总是以传统的“Pythonic”方式返回的 None 基本上是一个空操作。
