【发布时间】:2022-01-03 11:56:34
【问题描述】:
我们将完全采用 OOPS 方法将数据存储为类属性并根据需要调用定义的 get 方法,而不是使用 dict 来存储和传递数据。
在 Java 中我能够做到这一点,但在 Python 中遇到了一些麻烦。任何解决方案都会有所帮助。
import json
class InputModel:
def __init__(self, input_payload):
self.id1 = input_payload["id1"]
self.route = RouteModel(input_payload["route"])
self.id2 = input_payload["id2"]
self.id3 = input_payload["id3"]
self.id4 = input_payload["id4"]
self.id5 = input_payload["id5"]
def get_id1(self):
return self.id1
#similar for other ids
class RouteModel:
def __init__(self, input_payload_route):
self.id6 = input_payload_route["id6"]
self.id7 = input_payload_route["id7"]
def get_id6(self):
return self.id6
#similar for other ids
json_str = '{"id1":"string","route":{"id6":"string","id7":"string"},"id2": "string","id3": "string","id4": "string","id5": "string"}'
json_dict = json.loads(json_str)
im = InputModel(json_dict)
print(im.get_id1())
print(im.get_id6())
无法访问嵌套类属性
【问题讨论】:
-
你可能想看看
dataclasses。im.get_id1()在这里不起作用的原因是因为您的方法缩进了一层太深。我还应该提到 Python 不是 Java。不鼓励 Getter 和 Setter,因为您可以简单地使用im.id1等。如果您要访问嵌套实例的属性,您可以使用im.route.id6。