【发布时间】:2012-11-08 11:11:21
【问题描述】:
我在一个类中有一个函数:
def foo(self, value = None):
if value is None:
return self.value
self.value = value
return self
这是一个 getter 和 setter 合二为一的优点,我可以像这样链接函数:
three = anInstanceOfMyClass.foo(3).bar().foo()
当我这样做时出现问题:
shouldBeNoneButIsThree = anInstanceOfMyClass.foo(3).foo(None).foo()
这里 foo 认为我没有传递参数。 我可以通过以下方式避免这种情况:
- 为一些奇怪的对象设置值,比如随机字符串
- 在构造函数中创建一个对象实例,其值为默认值
这两种方法似乎都有些繁琐,有什么更简单的方法?
为某事设定价值
【问题讨论】:
-
我喜欢链接,因为它可以将 300 行短代码更改为 100 行,具有相同或更高的可读性。
-
不错的举动,在我写完答案后删除您的评论..