I would likely use the second approach, possibly using `None` to indicate invalid data. It is true that it is difficult to read/maintain if you add attributes later. However, more information on the purpose of this class/object would give insight as to why the first idea is a bad design: **where would you ever have a completely empty class with no methods or default data?** Why wouldn't you know what attributes the class has?

It's *possible* that `processData` might be better as a method (`process_data` to follow python naming conventions), since it acts upon the class. Given the example, it looks like it might be better as a data structure (where a `dict` may suffice).

Given a real example, you might consider taking the question to [CodeReview](http://codereview.stackexchange.com/), where they could help to refactor the code.