简单的“符号”类型,用于枚举或sentinel

SymbolType的Python项目详细描述


安装symboltype(使用"easy_install SymbolType""setup.py install")允许您访问peak.util.symbols 模块,以前仅通过安装完整的峰值工具包可用。 peak.util.symbols提供一个Symbol类型和两个内置符号 由peak:NOT_FOUNDNOT_GIVEN使用的。您可以创建 使用Symbol类型拥有符号对象,方法是为其指定符号名称 以及创建符号的模块的名称:

>>> from peak.util.symbols import Symbol
>>> AN_EXAMPLE = Symbol('AN_EXAMPLE', __name__)

结果对象的repr()str()形式与名称相同 你进来了:

>>> AN_EXAMPLE
AN_EXAMPLE

>>> str(AN_EXAMPLE)
'AN_EXAMPLE'

但符号只与自身相等;它们不等于字符串:

>>> AN_EXAMPLE == 'AN_EXAMPLE'
False

>>> AN_EXAMPLE == AN_EXAMPLE
True

符号的__name____module__属性是原始名称和 用于创建符号的模块:

>>> from peak.util.symbols import NOT_FOUND

>>> NOT_FOUND.__name__
'NOT_FOUND'

>>> NOT_FOUND.__module__
'peak.util.symbols'

符号想要知道其定义模块的原因是 正确腌制和脱腌:

>>> import pickle
>>> pickle.loads(pickle.dumps(NOT_FOUND))
NOT_FOUND

具体地说,拆开一个符号的结果就是 与原始符号相同的对象:

>>> pickle.loads(pickle.dumps(NOT_FOUND)) is NOT_FOUND
True

注意,这意味着符号必须在其内部的模块级定义 模块,与传递给它的名称相同,否则pickle将 不粘的时候找不到。

最后但并非最不重要的是,符号对象是不可变的,不能在 任何方式:

>>> AN_EXAMPLE.foo = "bar"
Traceback (most recent call last):
...
TypeError: Symbols are immutable

邮件列表

请将有关此包裹的问题直接发送到高峰邮件列表;请参阅 http://www.eby-sarna.com/mailman/listinfo/PEAK/了解详细信息。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java应该考虑使用DTO来代替Spring控制器层吗?   java为什么要将Maven与Git结合起来?   java试图将CSV转换为XLSX,但使用了错误的逗号拆分列   mysql Spring 3+Hibernate:java。sql。BatchUpdateException:无法添加或更新子行(ManyToMany)   java基本字符串反转器   java无法使用RestControllerAdvice为身份验证失败生成自定义错误消息   java当只允许SQLException时,如何抛出EOFEException?   java如何创建播放模块?   Android中匿名类的java实例化异常问题   java两个停靠组件,其中第二个组件填充剩余空间   java如何在按钮延迟时启用它   Java中正在运行的应用程序中的后台进程   java我正试图从一个字符串打印出这个字符输出   如何使用java socket通过两个不同的wifi连接两台电脑?   javaapachecamel:如何将分层数据从数据库转换为pojo   java Webrtc:OniconConnectionChange和onConnectionChange之间有什么区别   java如何重写已经创建的JTable方法   爪哇扫雷机堆垛机   雅加达ee Java ee EJB 3.0 Glassfish