I'd solve this by placing a yield from
expression outside the loop:
def iterate_my_objects_if_something(self):
for x in self.my_objects:
if x.something:
yield x
yield from []
This results in an iterable, without adding unwanted additional elements to be yielded.