Возможность увеличения поля в PydanticPython

Программы на Python
Ответить
Anonymous
 Возможность увеличения поля в Pydantic

Сообщение Anonymous »

Я пытаюсь использовать pydantic для очистки конечной точки API. Эти конечные точки немного сложно очистить за один раз, поэтому мне нужен какой-то идентификатор, чтобы объединить их вместе. Я решил использовать ab_number (номер at-bat) в качестве уникального идентификатора. Проблема, с которой я столкнулся, заключается в том, чтобы увеличить ее по списку каждого игрока в летучих мышах. Вот мой код:

Код: Выделить всё

import requests
from pydantic import BaseModel, Field
from typing import List

url = "https://statsapi.mlb.com/api/v1.1/game/745707/feed/live/diffPatch"
response = requests.get(url).json()

class AtBat(BaseModel):
ab_number: int = Field(None) # Ideally I don't want this here, but it's there to bypass the missing error
_counter: int = 1
def __init__(self, **data):
super().__init__(**data)
self.ab_number = AtBat._counter
AtBat._counter += 1
print(self.ab_number) # Can use this as a debugging check

class Plays(BaseModel):
allPlays: List[AtBat]

data = Plays(**response['liveData']['plays'])

Ошибка, с которой я столкнулся при использовании этого кода:

Код: Выделить всё

TypeError: unsupported operand type(s) for +=: 'ModelPrivateAttr' and 'int'
Что я хочу вернуть:

Код: Выделить всё

allPlays = [AtBat(ab_number=1), AtBat(ab_number=2), AtBat(ab_number=3), ..., ]
Я пытался изучить документацию о том, можете ли вы получить доступ к значению частного атрибута, но, похоже, его нет, поэтому я не уверен, есть ли другие способы сделать это. . Мне просто нужно что-то, что будет увеличиваться так же просто, как автоматически увеличивать первичный ключ в MySQL.


Подробнее здесь: https://stackoverflow.com/questions/793 ... n-pydantic
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»