Python __str__ versus __unicode__

Existe uma convenção python para quando você deve implementar__str__() versus__unicode__(). Eu vi as classes anularem__unicode__() mais frequentemente do que__str__() mas não parece ser consistente. Existem regras específicas quando é melhor implementar uma versus a outra? É necessário / boa prática implementar ambos?