Свързвам се със SUDS клиент към SOAP сървър, чийто wsdl съдържа много изброявания като следното:
</simpleType>
<simpleType name="FOOENUMERATION">
<restriction base="xsd:string">
<enumeration value="ALPHA"><!-- enum const = 0 -->
<enumeration value="BETA"/><!-- enum const = 1 -->
<enumeration value="GAMMA"/><!-- enum const = 2 -->
<enumeration value="DELTA"/><!-- enum const = 3 -->
</restriction>
</simpleType>
В моя клиент получавам последователности, които съдържат елементи от тези различни типове изброяване. Имам нужда от дадена членска променлива, трябва да знам всички възможни стойности за изброяване. По принцип имам нужда от функция, която взема екземпляр на едно от тези преброявания и връща списък от низове, които са всички възможни стойности.
Когато имам екземпляр, стартиран:
print type(foo.enumInstance)
Взимам:
<class 'suds.sax.text.Text'>
Не съм сигурен как да получа действителното име на simpleType от това и след това да получа възможните стойности от това, без сам да анализирам WSDL.
Редактиране: Открих начин да получа изброяванията с името simpleType, както е показано по-долу, така че проблемът ми се свежда до намиране на името на типа за дадена променлива, като се има предвид, че type(x) връща suds. sax.text.Текст вместо истинското име
for l in client.factory.create('FOOENUMERATION'):
print l[0]