Python相当于JS的 "符号"?

问题描述 投票:1回答:1

Javascript 符号 提供简单的唯一标识符。

> 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()蹊跷 但打印的时候都不好看。

有没有类似javascript的 Symbol 在python中可用?

javascript python symbols uniqueidentifier nonce
1个回答
2
投票

编辑过的。

这个类模仿了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
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.