def _islots(self):
if "<STR_LIT>" not in self.locals:<EOL><INDENT>return None<EOL><DEDENT>for slots in self.igetattr("<STR_LIT>"):<EOL><INDENT>for meth in ITER_METHODS:<EOL><INDENT>try:<EOL><INDENT>slots.getattr(meth)<EOL>break<EOL><DEDENT>except exceptions.AttributeInferenceError:<EOL><INDENT>continue<EOL><DEDENT><DEDENT>else:<EOL><INDENT>continue<EOL><DEDENT>if isinstance(slots, node_classes.Const):<EOL><INDENT>if slots.value:<EOL><INDENT>yield slots<EOL><DEDENT>continue<EOL><DEDENT>if not hasattr(slots, "<STR_LIT>"):<EOL><INDENT>continue<EOL><DEDENT>if isinstance(slots, node_classes.Dict):<EOL><INDENT>values = [item[<NUM_LIT:0>] for item in slots.items]<EOL><DEDENT>else:<EOL><INDENT>values = slots.itered()<EOL><DEDENT>if values is util.Uninferable:<EOL><INDENT>continue<EOL><DEDENT>if not values:<EOL><INDENT>return values<EOL><DEDENT>for elt in values:<EOL><INDENT>try:<EOL><INDENT>for inferred in elt.infer():<EOL><INDENT>if inferred is util.Uninferable:<EOL><INDENT>continue<EOL><DEDENT>if not isinstance(<EOL>inferred, node_classes.Const<EOL>) or not isinstance(inferred.value, str):<EOL><INDENT>continue<EOL><DEDENT>if not inferred.value:<EOL><INDENT>continue<EOL><DEDENT>yield inferred<EOL><DEDENT><DEDENT>except exceptions.InferenceError:<EOL><INDENT>continue<EOL><DEDENT><DEDENT><DEDENT>return None<EOL>
Return an iterator with the inferred slots.