RE: empty subscripts:
Should something[] be allowed syntax?
TL;DR: no
In a way this comes down to design philosophy vs implementation.
From an implementation perspective, the [] operator is another way to call __getitem__ and __setitem__. And from that perspective, why not have it act like a function call: no arguments, positional arguments, keyword arguments, the whole shebang.
But from a language design perspective, the [] operator is a way to "index" a container -- get part of the container's contents. And from this perspective, no index makes no sense.
I like to think of the dunders as an implementation detail, so no, the square brackets have a distinct meaning that is different from the parentheses, and should not have the same features.
another way to think of it is that we shouldn't encourage folks to "abuse" the [] as simply an alternative way to call the object.
-CHB