如何创建一个独特的对象?

sds*_*sds 4 python cons

我想要

class MyClass(object):
    _my_unique = ????      # if this were lisp, I would have written (cons nil nil) here

    def myFunc (self, arg):
        assert arg != _my_unique    # this must never fail
        ...
Run Code Online (Sandbox Code Playgroud)

用什么代替???来确保assert永不失败?

(和Lisp,我可以创建_my_unique(cons nil nil)和使用eqassert)。

附注。用例:我将放入_my_uniquea dict,所以我希望它等于自身,但我不希望它等于(在dict碰撞意义上)从外部传入的任何东西。

Bre*_*arn 6

您可以使用object(),但这不会使断言“永不失败”。如果您调用myFuncMyClass.my_unique作为对象传递,它仍然会失败。此外,如果您想测试它是否是同一个对象,请使用arg is not my_unique而不是!=.

  • @sds 你不能。您可以礼貌地要求不要在前面加上下划线,但您不能将任何内容设为私密。 (2认同)