В настоящее время я использую UserDict для переопределения некоторых методов словаря. То, что я пытаюсь сделать, это переписать метод get по умолчанию для словаря, чтобы иметь возможность передавать ему путь и избегать повторного вызова метода get.
Вот мой код:
class MyDict(UserDict):
def __getitem__(self, path):
keys = path.split("/")
value = self.data
for key in keys:
if isinstance(value, list):
value = [ v.get(key) if v else None for v in value]
else:
value = value.get(key)
if not value:
break
if isinstance(value, dict):
return MyDict(value)
return value
Однако все работает нормально, я хотел бы получить доступ к значению по умолчанию. Я хотел бы иметь возможность сделать что-то вроде этого:
my_json = {
"name": "John"
}
dict = MyDict(my_json)
children = dict.get("children", [])
Здесь я хотел бы, чтобы дети были пустым массивом, но я не могу получить доступ к значению по умолчанию (пустому массиву) в get_item метод, чтобы дети равнялись None ...
Большое спасибо за вашу помощь!