Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Метод from_dict полезен при создании модели из данных, поступающих из другого слоя (такого как слой базы данных или из строки запроса в REST слое)
storageroom_1 = StorageRoom(**kwarg)
to_serialize = {
'code': o.code,
'size': o.size,
'price': o.price,
"latitude": o.latitude,
"longitude": o.longitude,
}
class File:
"""
User's data type
"""
def __init__(self, path):
self.path = path
def __str__(self):
return self.path
class Scheme():
"""
Abstract scheme of model
"""
_scheme = {'doo': int, 'foo': str, 'bar': File}
class Model(Scheme):
"""
Data model
"""
def __init__(self, **kwargs):
self.__dict__.update(self._scheme)
for k, v in kwargs.items():
setattr(self, k, v)
def __setattr__(self, key, value):
if not hasattr(self, key):
raise AttributeError
elif not issubclass(type(value), self._scheme[key]):
raise ValueError
object.__setattr__(self, key, value)
def serial(self):
return {x: getattr(self, x) for x in self._scheme}
Интерпретатор выдаст исключение, о том, что передан неизвестный keyword аргумент. Если я правильно понял вопрос. Все сломается и всплывет при первом появлении
class A:
def __init__(self, a=None, b=None, *args, **kwargs):
self.a = a
self.b = b
Чистая архитектура в Python: пошаговая демонстрация. Часть 2