In most cases, this base class will not be instantiated directly. getNetEvent() will always construct the appropriate subclass for the specific type of event being generated, if that subclass is defined in the game program. However, it's possible that the game won't define all necessary subclasses. For example, a game written for version 1 of the networking package wouldn't include new subclasses added in version 2, because those subclasses weren't defined at the time the game was written. When getNetEvent() needs to instantiate a subclass that isn't defined in the game program, it will instead create a base NetEvent object, which will simply store the subclass-specific arguments as a list. This could be useful for debugging purposes, because it will at least let the programmer inspect the event details with the interactive debugger.
NetEvent : object