javascript - Python 相当于 JS `Symbol` ?

标签 javascript python symbols uniqueidentifier nonce

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时,具有特殊含义的函数具有唯一的返回值。

我知道在 python 中你可以使用 object()nonce但当你打印它们时,它们都不会呈现良好的效果。

Python 中有类似 javascript 的 Symbol 的东西吗?

最佳答案

已编辑:

此类模仿 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 - Python 相当于 JS `Symbol` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60696424/

相关文章:

将历史状态替换为同一路径后,Javascript 使用哈希重定向

javascript - Vis.js 节点工具提示不会显示在悬停时使用 ReactJS

python - 循环遍历 Pandas 数据框中的列

python - 单击最小化按钮时触发pyqt事件

python - 如果超过 K 行中有零,则删除 Pandas Dataframe 列

machine-learning - 这个符号是什么意思?

javascript - 将对象子数组排序到包含对象的新数组

windows - 如何从 .PDB 文件创建 .MAP 文件

c - 在 nm 报告中验证符号更改的简便方法

javascript - 使用 php 运行 Javascript 代码