简单的“符号”类型,用于枚举或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静态对象初始化   java请求的资源上不存在“Accesscontrolalloworigin”头。起源http://localhost:4200因此不允许访问   java i无法通过executor的submit方法处理列表的所有记录   javadoc中的java文档逻辑   java如何使RCPPlugin独立   java使用cobertura插件跳过*测试*   验证Java处理多个可能未知的日期/时间格式   java将JPanel添加到JFrame   BB 7.0中的黑莓Java标签   java动态地向注释处理环境添加类型   java如何将头信息作为键值对传递给使用jersey的rest服务   java使用ImageJ调整图像大小并裁剪图像   为什么Java8的ToIntFunction<t>不扩展函数<t,Integer>   java无法向Jackson ObjectMapper类注册模块   解析如何将此jsonarray解析为字符串或数组java   如何从Java调用具有数值参数的Scala方法   类如何从ColdFusion实现Java接口?   java如何让线程只添加到一个带有同步