基本上,我有一个像这样的列表:[START, 'foo', 'bar', 'spam', eggs', END]以后需要START/END标识符,以便稍后进行比较.现在,我把它设置成这样:
START = object()
END = object()
Run Code Online (Sandbox Code Playgroud)
这样可以正常工作,但是它遇到了不能使用酸洗的问题.我尝试以下方式做到这一点,但它似乎是一种实现此目的的可怕方法:
class START(object):pass
class END(object):pass
Run Code Online (Sandbox Code Playgroud)
任何人都可以分享更好的方法吗?另外,我上面建立的例子只是对另一个问题的过度简化.
Ale*_*lli 10
如果你想要一个保证唯一的对象,并且还可以保证恢复到完全相同的标识,如果是右后卫,顶级函数,类,类实例,如果你关心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()
Run Code Online (Sandbox Code Playgroud)
这些都不是很糟糕,没有任何特殊优势(取决于你是否关心==或只是is).可能会def因为一般性,简洁性和轻量级而获胜.
| 归档时间: |
|
| 查看次数: |
1137 次 |
| 最近记录: |