We have a database query API that executes an SQL string and returns a list of
DBRow
objects. The structure of the DBRow object is determined by the SQL query, so if for example the query was
SELECT id, name FROM tbl;
then DBRow
will have id
and name
members, as in
print(db_row.name)
I'm not saying that this is a good API, but I'm stuck with it until we have the man resources to switch to something else, and in the meantime this is making static type checking hell. Any use of a DBRow
's dynamically created members, which happens very often, causes a type error, because even though I can annotate that a function returns DBRow
, the DBRow
class definition doesn't have the members that executing a query will populate.
I don't want to disable warnings about missing members globally, and I don't want to reannotate all functions that return DBRow
as returning Any
. So what are my options?
I'm using Pyright if that helps, but am open to using another type checker as well.
question from:
https://stackoverflow.com/questions/65870871/how-to-type-hint-a-class-that-doesnt-have-a-static-definition 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…