首先:這個問題幾乎涵蓋零用例,並且只是關於病態的好奇心。話雖如此:重複無或其他Python sigleton
我不知道不久之前,如果有可能從Python(或任何其他單身人士,如True
或Ellipsis
)複製None
對象。通過「重複」,我的意思是創建一個精確的副本,而不是對同一個對象的另一個引用。那就是:
>>> noneBis == None
True
>>> noneBis is None
False
爲什麼我認爲這是可能的,是因爲Python的核心理念:一切都是對象。並且可以複製一個對象。
我已經嘗試了多種方法(比別人更多一些令人費解),無法做到這一點:
>>> copy.deepcopy(None) is None
True
>>> types.NoneType()
TypeError: cannot create NoneType instances
>>> object.__new__(type(None))
TypeError: object.__new__(NoneType) is not safe, use NoneType.__new__()
>>> types.NoneType.__new__(types.NoneType)
TypeError: object.__new__(NoneType) is not safe, use NoneType.__new__()
這似乎相當硬化和瘋狂,科學家,證明給我,但我不知道我有努力嘗試。 (我已經在Python 2.7中進行了測試,但是由於Python 3+被設計爲比Python 2更加傻瓜化,我的猜測是結果不會更好。)
實際上是否可以創建單獨的重複Python單身人士?
好吧,如果你的「複製」的定義很簡單'noneBis == None和noneBis不是None,那麼你只需要創建一個帶有認可的類priate'__eq__'方法。 –
'class NotNone:def __eq __(self,other):return other == None' ... – deceze
「爲什麼我認爲這是可能的,是因爲Python的核心理念:一切都是對象,一個對象可以被複制「。 =>誰曾經說過一個對象可以被複制?章節和詩節? - ) –