【发布时间】:2014-07-01 08:40:45
【问题描述】:
我想表示nil 的值,这是一个特定于我的应用程序的值,并将其与Python 内置的None 区分开来。最优雅的方法是什么?请注意,nil 是唯一的常量值。
【问题讨论】:
我想表示nil 的值,这是一个特定于我的应用程序的值,并将其与Python 内置的None 区分开来。最优雅的方法是什么?请注意,nil 是唯一的常量值。
【问题讨论】:
使用哨兵对象:
nil = object()
现在您可以测试is nil 或is not nil,就像测试None 一样。
当然,任何使用它的代码都必须从定义它的模块中导入它;它不是 None 的内置方式。
【讨论】:
nil 不同吗?如果我想像普通类一样公开它(因为我本质上希望它代表一个只有一个对象的类),那么最好将 nil 留在文件中的全局范围内。
is 进行测试,其他值会有所不同。
object 实例,即使== 也会认为它们不同。将这样的“单例”与==(也适用于None、Ellipsis 和NotImplemented)进行比较是不习惯的。