python - 在 Python 中更新实例变量时出现意外行为
问题描述
我在更新其中一个实例变量时遇到问题。下面是代码片段:
class DataFormatting:
def __init__(self):
self.default_dict = dict()
# default values
self.default_model = {'message': 'Please try after some time'}
self.default_dict['statusCode'] = 500
self.default_dict['body'] = {'type': 'lead',
'status': self.default_dict['statusCode'],
'model': self.default_model}
self.default_dict['headers'] = {'Content-Type': 'application/json'}
def get_response(self):
return self.default_dict
def set_response(self, status_code, final_response):
self.default_dict['statusCode'] = status_code
self.default_dict['body']['model'] = final_response
ob = DataFormatting()
ob.set_response(200, {'key1': 'value1'})
ob.get_response()
输出:
{'statusCode': 200,
'body': {'type': 'lead', 'status': 500, 'model': {'key1': 'value1'}},
'headers': {'Content-Type': 'application/json'}}
虽然键“statusCode”更新为200,但“body”中的“status”仍然是500。我应该如何解决这个问题?
解决方案
正文中的状态是在创建对象时配置的。要在调用 ' ' 时更新它,您还set_response
需要包含一个更新命令body.status
def set_response(self, status_code, final_response):
self.default_dict['statusCode'] = status_code
self.default_dict['body']['model'] = final_response
self.default_dict['body']['status'] = status_code
上面 set_response 中的代码更改应该可以修复它。但是,理想情况下,您应该创建一个“update_status”方法来处理整个对象的状态更新
推荐阅读
- php - CodeIgniter 会话未设置(试图在回调函数中设置会话)
- flutter - 如何在颤动中更改抽屉图标?
- python - 如何在python(pycharm)中将NumPy数组保存到PDB(蛋白质数据库)格式的文件
- node.js - Issue when deploying with Heroku (Error 504)
- sql - 使用postgres json当键为空时删除行
- django - Django 与 Graphos 使用 csv
- python - 为什么外部 Python 脚本的输出没有显示在我的 Python Tkinter GUI 中?
- c++ - Mac Catalina Clang 无法在 /usr/local/include 中找到头文件
- rust - 有一个悬空指针是否安全?
- php - 从单个 wp_editor 中删除工具栏