Or if we'd like to constrain ourselves to one method `FooClass.description()`
descriptions = map(FooClass.description, mylist) # `map` returns an iterator in py3k
"\n".join(filter(None, descriptions)) # `None` means `lambda x: x` here
Or if you don't like `filter()`
"\n".join(d for d in descriptions if d)
Or if `description()` is a side-effect-free method then It should be a property:
"\n".join(f.description for f in mylist if f.description)
At the end of the day new features doesn't matter due to most .NET-shops use old C# versions and It will not change any time soon.
I find it more helpful to think of it as meaning `bool` in that context. I think the None special case is only there because filter() predates bool() in Python.