umen There is no language in the world that you need to do this stuff to view base class members if they public or protected or friend .
And this is just the tip of why its bad
This has nothing to do with language. It is the editor issue, namely it's a matter of property display in the editor. Editor and language are two separate things. According to documentation, the code I posted is the proper way to change editor status of class properties. Appearance of custom properties can be controlled via @export but for properties inherited from built-in classes I think there's no other way except maybe creating shadow custom properties solely for purpose of tracking, which is imho much clumsier and bug prone than this.
Inside a Script, _get_property_list may be overridden to customize properties in several ways. This allows them to be available to the editor, display as lists of options, sub-divide into groups, save on disk, etc. Scripting languages offer easier ways to customize properties, such as with the @GDScript.@export annotation.
I'm not sure why they chose velocity to be invisible by default though. Maybe it's an oversight because this property was added in v 4. If you think this is the case - report the issue on Godot's github.
Btw GDScript, similarly to Python has no concepts of public, protected or friend members/classes. Everything is public, although, again, member publicity and editor visibility have nothing to do with each other.