Problem with make function on page 843
kamalfarahani opened this issue · 0 comments
kamalfarahani commented
I believe the pseudocode for object construction on page 843 is somewhat misleading:
def make(the_class, some_arg):
new_object = the_class.__new__(some_arg)
if isinstance(new_object, the_class):
the_class.__init__(new_object, some_arg)
return new_objectFirstly, 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:
def make(the_class, *args, **kwargs):
new_object = the_class.__new__(the_class, *args, **kwargs)
if isinstance(new_object, the_class):
the_class.__init__(new_object, *args, **kwargs)
return new_object