Почему класс python по умолчанию ведет себя иначе, чем этот пользовательский класс, который я создал?

#python-3.x #class #constructor #magic-methods

Вопрос:

 class Example:
    def __init__(self):
        print("constructor called")


obj = Example()
 

obj является объектом MyClass , если я вызову метод dunder __init__ .
obj по умолчанию передается в качестве аргумента методу dunder при его вызове.
поэтому, когда я передаю obj в качестве аргумента __init__ методу, например

 obj.__init__(obj)
 

я бы получил это

 TypeError: __init__() takes 1 positional argument but 2 were given
 

это означает, что были переданы два аргумента, по умолчанию obj и тот, который я передал, но когда я делаю то же самое с объектом str класса

 str_object = ""
str_object.__init__(str_object)
 

ошибки не видно. почему это?