Sin duda no se recomienda para la localización, como en su ejemplo.
Lo principal a tener en cuenta es cuánto del código va a ser similar versus diferente en las versiones especializadas de la clase. Si solo una pequeña cantidad de código es diferente, o si solo los datos son diferentes ("Hola" frente a "Salut"), existen formas mejores.
Un caso en el que podría considerar la declaración de clases condicional es si proporciono funcionalidad en dos sistemas operativos diferentes, y obtener esa funcionalidad es muy diferente entre los dos. Como ejemplo, tal vez estoy tratando de conducir iTunes desde un script, y en MacOS estoy usando AppleScript para conducirlo, pero en Windows tengo que usar COM. Podría crear una clase contenedora que el resto de mi código podría usar sin importar qué SO estaba en uso.
Lo siento, quise preguntar si era una práctica recomendada. Pregunta actualizada – ash
Para casos más complejos, la práctica recomendada sería [metaclases] (http://www.ibm.com/developerworks/linux/library/l-pymeta.html), para que no se repita. –
BTW, para el caso específico de localización, recomendaría el módulo 'gettext' en la biblioteca estándar. Utilizándolo, su ejemplo podría ser manejado por una única clase con 'self.greeting = _ (" Hello ")' en él. – martineau