Как указано, ваш тип голоса, места и манеры являются просто перечисляемыми типами. Существует несколько способов их реализации, например
class voice(object):
Voiced, Voiceless = range(2)
Тогда вы можете обратиться к голосу. Голосу и голосу. Без голоса и т. Д.
Проблема в таких типах, как фонема. В С обычным способом реализовать нечто подобное было бы держать нос и использовать союз. В чем-то вроде Python вы используете полиморфизм. Сначала выясните, какие операции вы собираетесь выполнять с типом фонем. Затем реализуйте эти операции как функции-члены класса Vowel и класса Consonant. В C ++ вы сделали бы эти функции-члены виртуальными и создали бы абстрактный базовый класс для Vowel и Consonant; в python вы можете уйти, не делая этого, благодаря утилитному типу, хотя вы все равно можете найти базовый класс полезным.
Итак,
class Vowel(object):
def SomeInitialMethod(self):
# ...
class Consonant(object):
def SomeInitialMethod(self):
# ...
p.SomeInitialMethod() # p can be either vowel or consonant
def SomeLaterFunction(p)
# p is assumed to be either a Vowel or a Consonant
if isinstance(p, Vowel):
# ...
elif isinstance(p, Consonant):
# ...