Ну, можно, конечно, вот так сделать:
class PythonClass:
def __new__(cls):
return {"key_1": 12}
inst_1 = PythonClass()
print(inst_1)
Это будет именно то, о чём вы спрашиваете, - класс, который при инстанцировании создаёт словарь, вместо объекта класса.
Но я бы порекомендовал обратить внимание на вариант из комментов - функцию, которая просто имеет имя, как у вашего класса:
def PythonClass():
return {"key_1": 12}
inst_1 = PythonClass()
print(inst_1)
Либо, если задача именно в том, чтобы объект класса мог сериализоваться в json, то можно написать кастомный энкодер:
# Мы не меняем реализацию самого класса
class PythonClass:
def __init__(self):
self.__some_dict = {"key_1": 12}
inst_1 = PythonClass()
# Вместо этого мы делаем энкодер, который знает, как сериализовать наш класс в словарь
import json
class CustomEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, PythonClass):
return obj._PythonClass__some_dict
return json.JSONEncoder.default(self, obj)
# И используем этот декодер для сериализации в json
dumped = json.dumps(inst_1, cls=CustomEncoder)
print(dumped)