Ideally, generics would be initialized at the point where they are used,
like in all other languages I'm familiar with. But I don't think we can
do this is in a readable manner without new syntax, and that is unlikely
to happen soon, considering the SC's stance on typing features.
I wouldn't be quite so pessimistic. The SC rejected PEP 677 at least in part because, being a type annotation, it has to be an expression, but it's a form of expression that's not useful in other contexts.
If we're considering syntax to replace TypeVar(), like
def foo<T>(arg1: T, arg2: T) -> list[T]:
...
class C<T, S>:
def __init__(self, arg1: T, arg2: S):
self.attr1 = arg1
self.attr2 = attr2
...
that would not be general expression syntax. (It would be good to poll on python-dev what people would think of such a proposal though.)