首页 > 解决方案 > 从子类中的枚举返回值

问题描述

我想从子类中的 Enum 返回字符串值。我有这样的班级结构

Class1           
  |              
  |--subclass       
  |      |            
  |      |----Enum         

现在我想从枚举中返回一个字符串值。

我知道如何返回值return str(self.value)

def __str__(self):
        return str(self.value)
class GSSML:
    class ProsodyAttributes:
        class Rate(Enum):
            def __srt__(self):
                return self.value
            x_slow = 'x-slow'
            slow = 'slow'
            medium = 'medium'
            fast = 'fast'
            x_fast = 'x-fast'
            default = 'default'

还有我的测试代码

import gssml

def main():
    ssml = gssml.GSSML()
    print(ssml.ProsodyAttributes.Rate.x_fast)


if __name__ == '__main__':
    main()

现在我希望它会回来x-fast 但我得到了Rate.x_fast

我不知道我做错了什么。请帮忙

标签: python-3.x

解决方案


您的代码没有返回正确的值,因为您将 dunder 方法拼写__str__错误__srt__


In [15]: from enum import Enum 
    ...:  
    ...: class GSSML: 
    ...:     class ProsodyAttributes: 
    ...:         class Rate(Enum): 
    ...:             def __str__(self): 
    ...:                 return self.value 
    ...:             x_slow = 'x-slow' 
    ...:             slow = 'slow' 
    ...:             medium = 'medium' 
    ...:             fast = 'fast' 
    ...:             x_fast = 'x-fast' 
    ...:             default = 'default' 
    ...:  
    ...: ssml = GSSML() 
    ...: print(ssml.ProsodyAttributes.Rate.x_fast)                                                                                                                                
x-fast

推荐阅读