简单的“符号”类型,用于枚举或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第三方库


热门话题
提供mysql命令的Tomcat6 Java Servlet?   类型级别上的java@Resource   java当我使用SeleniumWebDriver运行TestNG套件时,我看到了这个异常。有人能帮我调试一下吗?   java读取Linux MIME问题上的Windows文本文件?   从URL读取数据的java Android AsyncTask返回Android。操作系统。NetworkOnMainThreadException   java MongoError:Spring引导抛出E11000重复密钥错误   Spring批处理读取器中sql查询内部的java调用方法   SeleniumWebDriver中的java添加日期格式MM/dd/yyyy   java如何在ObjectAnimation之后锁定视图?   当我试图在java中使用selenium webdriver登录时,出现了“此浏览器或应用程序可能不安全”错误   java如何在swaggerui中获取POST数据?   java Tomcat挂起调用时区   java使用Facelets 1.1.12在JSF 1.2中创建自己的验证器   java我可以直接在文件系统中存储ElasticSearch索引吗?   java Log4j没有打印日志   java如何在RecycleView适配器中显示ImageView onClick中的对话框片段   java找不到类“安卓”。操作系统。持久捆绑'   java与php web上的Linux脚本通信   在Tomcat下解析XML文档时,weblogic的DomainFactoryProperties中存在java NullPointerException