避免链接属性上的非类型attributeerror异常

noattr的Python项目详细描述


访问具有链接属性的对象时

info = obj.a.b.c.d or 'Unknown'

通常,当一个中间属性返回“none”时,它将失败

if obj.a returns None
obj.a.b.c.d will fail with that exception :
AttributeError: 'NoneType' object has no attribute 'b'

为了避免这种情况,应该返回noattr,而不是返回“none”值, 即使是下一个链式属性也将返回“noattr”

if obj.a returns NoAttr
obj.a.b.c.d will not fail and will return NoAttr

根据上下文的不同,“noattr”可以被视为false、0、、[]或{},因此

if obj.a returns NoAttr

obj.a.b.c.d or 'Unknown' will return 'Unknown'

for i in obj.a.b.c.d:
    print i
prints nothing

obj.a.b.c.d + 1 returns 1

obj.a.b.c.d.anyfunc() returns NoAttr

but for ljust(), rjust(), rfind(), find(), rindex(), index(), count()
NoAttr is seen as '' :

obj.a.b.c.d.ljust(3) returns '   '

新闻

0.0.8(2018-08-24)

_ iter\uuu()现在返回一个空iter

0.0.7(2018-08-21)

更新python3兼容性代码

0.0.6(2016-03-11)

删除python文本操作的“或”和“rshift”定义

0.0.5(2015-10-13)

添加为列表属性

0.0.4(2015-08-19)

添加setattr以避免任何修改

0.0.3(2015-07-27)

第一个官方版本

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

推荐PyPI第三方库


热门话题
java使用ObjectOutput/InputStream从自定义位置读/写   Java队列数组只打印出打印方法中for循环中的最后一个元素   java如何使用searchManager搜索和筛选listview   java ValueAnimator更改背景颜色   java什么是AOSP工具链?   序列化Java/Serializable仅覆盖已更改的对象   java Android单例类仅在第二次刷新时更新   将文本追加到JTextPane时,JTextPane的java滚动条不可见   java行为和繁忙指示器   javaspring,Thymeleaf和CSS如何给错误着色   java如何在两个测试类之间共享外部资源?   java Druid longSum度量未填充   按下按钮时,java列表不会显示(+字符串参数“流派”不存在)   java在Hibernate中如何延迟加载子记录?   java为对象提供随机统计信息   java如何使用GWT编辑器框架编辑多值字段?