У меня есть класс Record
, который ссылается на запись базы данных по ее первичному ключу, идентификатору и хранит некоторую кэшированную информацию.
class Record:
def __init__( self, id ):
self.id = id
self.various_cached_info = spam
У меня также есть класс RecordCollection
, который является кортеж из Records
.
from typing import Tuple, TypeVar
TRecord = TypeVar( "TRecord", bound = Record )
class RecordCollection( Tuple[TRecord, ...] ):
pass
Теперь, , когда я выбираю RecordCollection
, как я могу изменить этот класс, чтобы выбрать только идентификаторы (как список ints
)?
Я пытался:
- изменить
Record.__getstate__
, чтобы просто включить идентификатор и сбросить кэшированную информацию. Это помогает, но RecordCollection
по-прежнему выбирает имя-типа"Record
" для каждого отдельного элемента в массиве. - , изменяя
RecordCollection.__getstate__
, чтобы включить только список идентификаторов, но что-то позади капота травит часть tuple
в другом месте.
import json
import jsonpickle
a = Record( 1 )
b = Record( 2 )
c = Record( 3 )
l = RecordCollection( (a, b, c) )
print( json.dumps( json.loads( jsonpickle.dumps( l ) ), indent = 4 ) )