How to find find all possible arguments to classes in bpy.types.*? I know I can use something like print(dir(bpy.types.FModifierLimits)) to find all possible "attributes". But what about arguments?

bpy.types.FModifierLimits(arg)


How would I print arg?
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