I believe the pseudocode for object construction on page 843 is somewhat misleading:
defmake(the_class, some_arg):
new_object=the_class.__new__(some_arg)
ifisinstance(new_object, the_class):
the_class.__init__(new_object, some_arg)
returnnew_object
Firstly, it doesn't function correctly even in the simplest case. the_class.__new__(some_arg) should be called as the_class.__new__(the_class, some_arg) for proper operation. Secondly, it lacks generality. I suggest the following code as a more suitable replacement:
defmake(the_class, *args, **kwargs):
new_object=the_class.__new__(the_class, *args, **kwargs)
ifisinstance(new_object, the_class):
the_class.__init__(new_object, *args, **kwargs)
returnnew_object
I believe the pseudocode for object construction on page 843 is somewhat misleading:
Firstly, it doesn't function correctly even in the simplest case.
the_class.__new__(some_arg)should be called asthe_class.__new__(the_class, some_arg)for proper operation. Secondly, it lacks generality. I suggest the following code as a more suitable replacement: