python - 在 Python 中拥有唯一标识符的正确方法?

标签 python identifier

基本上,我有一个像这样的列表:[START, 'foo', 'bar', 'spam', eggs', END] 和 START/END 标识符是以后需要的,所以我以后可以对比。现在,我把它设置成这样:

START = object()
END = object()

这工作正常,但遇到无法使用 pickling 的问题。我尝试按照以下方式进行操作,但这似乎是一种糟糕的方法:

class START(object):pass
class END(object):pass

有人可以分享更好的方法吗?此外,我在上面设置的示例只是对另一个问题的过度简化。

最佳答案

如果你想要一个保证唯一的对象,并且也可以保证恢复到完全相同的标识,如果 pickled 和 unpickled 马上回来,顶级函数,类,类实例,如果你关心 is 而不是 == 也列表(和其他可变的),都很好。即,任何:

# work for == as well as is
class START(object): pass
def START(): pass
class Whatever(object): pass
START = Whatever()

# if you don't care for "accidental" == and only check with `is`
START = []
START = {}
START = set()

这些都不是可怕的,没有任何特别的优势(取决于你是否关心 == 或只是 is)。可能 def 凭借通用性、简洁性和更轻的重量取胜。

关于python - 在 Python 中拥有唯一标识符的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1677726/

相关文章:

javascript - 如何在 Django 模板过滤器中用下划线替换逗号

python - 无法在python数据框中将列类型从对象转换为str

c++ - 包装函数只能看到它自己?

ios - IOS获取广告标识符的方法

python - 在 Pandas 条件下使用 fillna

python - 在Python中,对于POST请求,是否可以从POST请求对象中获取该请求所使用的ip地址?

python - 将列表复制到 numpy 数组的一部分

c++ - Xcode 显示 C++ 继承的 "Use of undeclared Identifier"错误

JQuery 标识符名称限制

C++ 错误代码 C2065 : '<class name>' undeclared identifier, 即使它应该在另一个 .h 文件中声明