首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加导致下划线的python对象属性。

添加导致下划线的python对象属性。
EN

Stack Overflow用户
提问于 2018-11-26 22:12:07
回答 1查看 529关注 0票数 1

我正在使用json泡菜将嵌套的python对象转换为json。Python类:

代码语言:javascript
复制
class Cvideo:
    def __init__(self):
        self._url = None

    @property
    def url(self):
        return self._url

    @url.setter
    def url(self, value):
        self._url = value

序列化模块:

代码语言:javascript
复制
def create_jason_request(self, vid1: Cvideo):
    vid1 = Cvideo()
    vid1.url = entry['uploader_url'] # will get a leading underscore
    vid1.notdefinedproperty = "test" # wont get a leading underscore in json

    return jsonpickle.encode(vid, unpicklable=False)

不幸的是,创建的json描述的是_url而不是url。在使用pythin属性时,如何避免在json中引导下划线创建?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-26 22:17:21

这是完全正常的行为。您的实例状态是存储的,而不是外部API。属性不是状态的一部分,它们仍然是方法,因此是API的一部分。

如果您必须将url存储在JSON结果中,那么使用 method返回一个更能反映您的状态的字典。您必须创建一个匹配的__setstate__方法:

代码语言:javascript
复制
def __getstate__(self):
    return {'url': self._url}

def __setstate__(self, state):
    self._url = state.get('url')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53489910

复制
相关文章

相似问题

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