首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用点运算符访问使用colander模型类创建的对象的属性

使用点运算符访问使用colander模型类创建的对象的属性
EN

Stack Overflow用户
提问于 2017-11-05 07:57:43
回答 1查看 70关注 0票数 0

我想知道是否有一种方法可以使用点运算符访问使用任何漏斗模型类创建的对象。

示例:

代码语言:javascript
复制
class Image(colander.MappingSchema):
    url = colander.SchemaNode(colander.String())
    width = colander.SchemaNode(colander.Int())
    height = colander.SchemaNode(colander.Int())

所以,使用这个模型,如果我反序列化一个json字符串,

代码语言:javascript
复制
image = Image.deserialize("{'url':'xyz', 'width':10, 'height':12}")

我想使用dot (.)操作符。

喜欢,

代码语言:javascript
复制
image.url
image.width
image.height

一旦可以使用点运算符访问IDE代码完成建议,这些属性就应该可用。

这样做的目的是帮助客户端在不查看模型的情况下轻松获取模型属性。

EN

回答 1

Stack Overflow用户

发布于 2018-03-12 05:41:55

我想你可能误解了,反序列化在这里做了什么。另外,你的代码示例在我看来是错误的,因为反序列化需要一个类似字典的对象,而不是一个字符串。

然而,为了回答你最初的问题,答案是不,你不能使用点运算符。这样做的原因是,反序列化输入实际上会返回一个字典,而不是Image类型的对象。See colander's documentation about deserialization

所以以你的例子为例,并纠正它,你会得到如下所示:

代码语言:javascript
复制
class Image(colander.MappingSchema):
    url = colander.SchemaNode(colander.String())
    width = colander.SchemaNode(colander.Int())
    height = colander.SchemaNode(colander.Int())

image = Image().deserialize({'url':'xyz', 'width':'10', 'height':'12'})

如果您键入并打印变量image,将显示以下内容

代码语言:javascript
复制
>>> type(image)
dict
>>> print(image)
{
    'url': 'xyz',
    'height': 12,
    'width': 10
}

请注意将字符串数值转换为整数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47116855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档