Python相当于JS`Symbol`?

2024-10-03 04:28:29 发布

您现在位置:Python中文网/ 问答频道 /正文

Javascriptsymbols提供简单的唯一标识符:

> 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'

例如,当您不能使用Exceptions时,这对于从具有特殊含义的函数中获得唯一的返回值非常有用

我知道在python中可以使用object()nonce,但当您打印它们时,这两种方法都不能很好地渲染

python中有类似javascript的Symbol


Tags: falsemapnewgetfoobar标识符symbol
1条回答
网友
1楼 · 发布于 2024-10-03 04:28:29

编辑:

这个类模仿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

相关问题 更多 >