TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #397 · 12 ное.

Использование Pydantic сегодня стало нормой, и это правильно. Но иногда на ревью вижу, что используют его не всегда корректно. Например, метод BaseModel.model_dump() по умолчанию не преобразует стандартные типы, такие как datetime, UUID или Decimal, в простой сериализуемый для JSON вид. Тогда пишут кастмоный сериализатор для этих типов чтобы функция json.dump() не падала с ошибкой. import uuid from datetime import datetime from decimal import Decimal from uuid import UUID from pydantic import BaseModel class MyModel(BaseModel): id: UUID date: datetime value: Decimal obj = MyModel( id=uuid.uuid4(), date=datetime.now(), value='1.23' ) print(obj.model_dump()) # не подходит для json.dump # { # 'id': UUID('4f8c1bc4-25fd-40cd-9dbe-2c73639b0dc1'), # 'date': datetime.datetime(2025, 12, 12, 12, 12, 12, 111111), # 'value': Decimal('1.23') # } # добавляем свой кастомный сериализатор json.dumps(obj.model_dump(), cls=MySerializer) # { # 'id': '4f8c1bc4-25fd-40cd-9dbe-2c73639b0dc1', # 'date': '2025-12-12T12:12:12.111111', # 'value': '1.23' # } В данном случае класс MySerializer обрабатывает datetime, UUID и Decimal. Например так: class MySerializer(json.JSONEncoder): def default(self, o): if isinstance(o, Decimal): return str(o) elif isinstance(o, datetime): return o.isoformat() elif isinstance(o, UUID): return str(o) return super().default(o) Специально для тех, кто всё еще так делает - в этом нет необходимости! Pydantic может это сделать сам, просто нужно добавить параметр mode="json". json.dumps(obj.model_dump(mode="json")) # { # 'id': '4f8c1bc4-25fd-40cd-9dbe-2c73639b0dc1', # 'date': '2012-12-12T12:12:12.111111', # 'value': '1.23' # } #pydantic#libs

Резултати

Пронајдени 1 слични објави

Пребарај: #salah

当前筛选 #salah清除筛选
🏆 Info 288 - DEPORTES

@info288_deportes · Post #35171 · 02.09.2024 г., 08:45

⚽️Liverpool Salah anuncia su salida del Liverpool a final de temporada#Liverpool#Salah El anunció llegó tras su brillante actuación, otra más, en la contundente victoria por 0-3 en Old Trafford ante el Manchester United. El egipcio, con un gol y dos asistencias a Luis Diaz, participó en los tres goles de los 'reds'. Lógicamente, fue designado como el mejor jugador del encuentro. Tras él, fue preguntado por su futuro en el club. Un tema candente en los últimos tiempos, ya que se le ha vinculado en numerosas ocasiones con Arabia Saudí y su contrato en Anfield expira el próximo 30 de junio. Salah, al igual que hizo Klopp en su momento, se sinceró delante de los micrófonos de 'Sky Sports' y anunció su salida del club en diferido. "Como sabéis, es mi último año en el club. Sólo quiero disfrutarlo y no quiero pensar en ello. Nadie en el club ha hablado conmigo todavía sobre renovar, así que está bien, jugaré mi última temporada". https://www.marca.com/futbol/premier-league/2024/09/01/66d4b546268e3ed8088b458d.html 🏆@Info288_deportes