class Cat(Animal):
    HAIR_LONG, HAIR_SHORT = 'long', 'short'

def __init__(self, name, weight, hair=HAIR_LONG, **kwargs):
    self.hair = hair
super(Cat, self).__init__(name, weight, **kwargs)
dog = Dog('Snoopy', 60, bark=Dog.HUSH)
cat = Cat('Tigger', 50, kind='Tiger', hair=Cat.HAIR_SHORT)
Pythonic способ уменьшить количество небольших подклассов в базовом классе?