【问题标题】:Treat class as NoneType python将类视为 NoneType python
【发布时间】:2013-08-13 11:46:55
【问题描述】:

这可能是一个很长的尝试,但我想我还是会尝试。

有没有办法让一个班级像NoneType 一样行事?

假设我在第三方 API 中有这个对象,我无法更改但我可以对其进行修补。大多数方法可以在同一阶段返回此对象。该对象与None 相同,因为他们决定使用自己的自定义类型来表示与None 相同的含义。

我是否有可能对这种类型进行猴子修补,以便在检查时表现得像 None:

value = SpecialNoneClass()
if value is None:
   print foobar 

【问题讨论】:

标签: python


【解决方案1】:

不,你不能,因为is 测试的是身份,而不是平等。 value 引用必须与None 指向相同的对象

None 是一个单例对象,and None 在 Python 3 中是一个关键字,所以你也不能让 None 引用另一个对象。

【讨论】:

  • 我想我能做的最好的就是实现__nonzero__并返回False
  • 这是一个更好的选择;或使用 is: if value is SpecialNoneClassthat 对象进行测试。如果他们将其用作单例,那将可以正常工作。
  • "If they are using it as a singleton that'll work just fine" 不幸的是没有。哦,就像生活一样。
猜你喜欢
  • 2015-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-03
  • 1970-01-01
  • 1970-01-01
  • 2011-09-03
相关资源
最近更新 更多