Open
Description
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_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:
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
Metadata
Metadata
Assignees
Labels
No labels