Нет. И по уважительным причинам: это нарушило бы ожидания людей, читающих код. Это также может привести к поломке любых сторонних библиотек, которые вы импортируете, которые (разумно) ожидают, что dict литералы будут стандартными словарями Python.
Лучший способ исправить это без большого количества дополнительной типизации - просто добавить статический метод .from
в свой класс словаря, который пытается использовать литерал и возвращает экземпляр вашего словаря.
MyDict.from({
"key": "value"
})
Где реализация from
может выглядеть примерно так:
@classmethod
def from(cls, dictionary):
new_inst = cls()
for key, value of dictionary.items():
new_inst[key] = value
return newInst
Редактировать на основании комментария:
user2357112 правильно указывает, что вы можете просто использовать конструктор, если подпись конструктора dict совпадает с вашим пользовательским классом:
some_instance = MyDict({"key": "value"})
Если вы все испортили, вам придется пойти по специальному маршруту а-ля from
.