Как можно узнать типы данных которые может кушать класс?
Открыть документацию к классу и прочитать в ней. Если документации нет - открыть исходный код и посмотреть в нём.
Вызвать функцию help в интерактивном режиме Python, передав ей класс или функцию:
>>> help(set)
Ещё для этого удобно использовать среду IPython, в которой можно отдельно получить сигнатуру класса/функции, исходный код, документацию:
Python 3.10.5 (main, Aug  1 2022, 07:53:20) [GCC 12.1.0]
Type 'copyright', 'credits' or 'license' for more information
IPython 8.4.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: set?
Init signature: set(self, /, *args, **kwargs)
Docstring:     
set() -> new empty set object
set(iterable) -> new set object

Build an unordered collection of unique elements.
Type:           type
Subclasses:     

In [2]: %pdef set
No definition header found for set

In [3]: %pdoc set
Class docstring:
    set() -> new empty set object
    set(iterable) -> new set object
    
    Build an unordered collection of unique elements.
Init docstring:
    Initialize self.  See help(type(self)) for accurate signature.

In [4]: %psource set
No source found for set