gpt4 book ai didi

python - 继承 dict 的 python 类的 getters/setters

转载 作者:行者123 更新时间:2023-11-30 23:49:15 25 4
gpt4 key购买 nike

为了帮助序列化为 JSON,我通常构建一个继承自 python dict 类的类。如果类应该有特定的字段,我希望有方法来获取和设置。

目前,我构建了一个类:

class MyRequest(dict):
def __init__(self, firstName=None, lastName=None):
self['firstName'] = firstName
self['lastName'] = lastName

def get_firstName(self):
return self['firstName']
def set_firstName(self, firstName):
self['firstName'] = firstName

def get_lastName(self):
return self['lastName']
def set_lastName(self, lastName):
self['lastName'] = lastName

但这使用起来确实很麻烦。由于底层“存储”是字典,因此我不能只访问诸如

之类的字段
myReq.firstName = "Foo"
print myReq.lastName

但是有没有办法在保持字典支持的情况下到达那里?

最佳答案

怎么样:

class MyRequest(dict):
def __init__(self, firstName=None, lastName=None):
self['firstName'] = firstName
self['lastName'] = lastName

def __getattr__(self, name):
return self[name]

def __setattr__(self, name, value):
self[name] = value

请注意,如果您的某个属性与 dict 方法同名(例如 update),这可能会再次困扰您。在这种情况下,获取属性将返回方法,设置属性将覆盖该方法。这可能很难调试。

关于python - 继承 dict 的 python 类的 getters/setters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7747952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com