【问题标题】:How to get a class attribute depending on a string in python如何根据python中的字符串获取类属性
【发布时间】:2013-05-11 09:15:16
【问题描述】:

我在 python 中有一个类,我想根据这样的字符串获取几个属性之一:

class my_class:
    def __init__(self):
        self.att1=1
        self.att2=2
        self.att3=3

    def getatt (self, number):
        return self.att(number)

我怎样才能做到这一点?

【问题讨论】:

    标签: python string class attributes


    【解决方案1】:
    def getatt(self, number):
        return getattr(self, 'att%d' % number)
    

    或者使用新的样式格式:

    def getatt(self, number):
        return getattr(self, 'att{}'.format(number))
    

    另外请注意,如果您有许多这些属性,您或许应该考虑存储一个列表并从它们的索引中检索元素。

    【讨论】:

    • 感谢您的快速帮助!
    • 如果名称有含义,并且您还想通过数字查找,也可以查看namedtuple
    【解决方案2】:

    我会做类似的事情

    class My_Class:
        def __init__(self):
            self.att = {1: 1, 2: 2, 3: 3}
        def getatt(self, number):
            return self.att[number]
        def __getattr__(self, attname):
            if attname.startswith('att') and attname != 'att':
                try: num = int(attname[3:])
                except ValueError: pass
                else: return self.att[num]
            raise AttributeError(attname)
    

    (未经测试)

    有了这个,您可以访问捆绑的数据以及需要的属性。

    【讨论】:

      猜你喜欢
      • 2019-09-04
      • 1970-01-01
      • 1970-01-01
      • 2018-11-28
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多