How to find find all possible arguments to classes in bpy.types.*?
To answer your question directly.

An existing instance is always passed into classes from bpy.types, however this is not common usage when creating new classes in the Blender Python API.



Blender/Python types aren't instantiated by calling the classes.

To create a new object for eg:

obj = bpy.data.objects.new("name", None)


not:

obj = bpy.types.Object()




There is one use-case for calling a class, and that is to create a new instance of existing data (however this is quite esoteric and not normally useful in practice).

This example creates an instance of a subclass of bpy.types.Object.

&gt;&gt;&gt; class MyObjectSubclass(bpy.types.Object):
...     def my_helper_function():
...         print(42)
...
&gt;&gt;&gt; obj_a = bpy.data.objects.new("name", None)
&gt;&gt;&gt; obj_b = MyObjectSubclass(obj_a)
&gt;&gt;&gt; obj_a is obj_b
False
&gt;&gt;&gt; obj_a == obj_b
True
&gt;&gt;&gt; obj_b.my_helper_function()
42