Python 相当于 JS `Symbol`?
Python equivalent to JS `Symbol`?
Javascript symbols 提供简单的唯一标识符:
> const foo1 = Symbol('foo');
> foo1
Symbol(foo)
> const foo2 = Symbol('foo');
> foo1 === foo2
false
> let m = new Map();
> m.set(foo1, "bar");
> m.set(foo2, "rosco");
> m.get(foo1)
'bar'
> m.get(foo2)
'rosco'
这对于例如当您不能使用 Exception
s.
时,具有来自具有特殊含义的函数的唯一 return 值
我知道在 python 中您可以使用 object()
或 nonce,但是当您打印它们时,它们都不会呈现出很好的效果。
在 python 中是否有类似 javascript 的 Symbol
的内容?
已编辑:
这个 class 模仿 javascript 对应的。
与js不同,Python接受一个对象的实例作为字典键;此代码只是在打印符号时添加适当的表示。
class Symbol:
def __init__(self, name=''):
self.name = f"Symbol({name})"
def __repr__(self):
return self.name
# === test ===
foo1 = Symbol('foo')
print(foo1)
foo2 = Symbol('foo')
print(foo1 == foo2)
m = {}
m[foo1] = "bar"
m[foo2] = "rosco"
print(m[foo1])
print(m[foo2])
> Symbol(foo)
> False
> bar
> rosco
Javascript symbols 提供简单的唯一标识符:
> const foo1 = Symbol('foo');
> foo1
Symbol(foo)
> const foo2 = Symbol('foo');
> foo1 === foo2
false
> let m = new Map();
> m.set(foo1, "bar");
> m.set(foo2, "rosco");
> m.get(foo1)
'bar'
> m.get(foo2)
'rosco'
这对于例如当您不能使用 Exception
s.
我知道在 python 中您可以使用 object()
或 nonce,但是当您打印它们时,它们都不会呈现出很好的效果。
在 python 中是否有类似 javascript 的 Symbol
的内容?
已编辑:
这个 class 模仿 javascript 对应的。
与js不同,Python接受一个对象的实例作为字典键;此代码只是在打印符号时添加适当的表示。
class Symbol:
def __init__(self, name=''):
self.name = f"Symbol({name})"
def __repr__(self):
return self.name
# === test ===
foo1 = Symbol('foo')
print(foo1)
foo2 = Symbol('foo')
print(foo1 == foo2)
m = {}
m[foo1] = "bar"
m[foo2] = "rosco"
print(m[foo1])
print(m[foo2])
> Symbol(foo)
> False
> bar
> rosco