0

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

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

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

我怎样才能做到这一点?

4

2 回答 2

5
def getatt(self, number):
    return getattr(self, 'att%d' % number)

或使用新样式格式:

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

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

于 2013-05-11T09:18:51.943 回答
0

我会做类似的事情

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)

(未经测试)

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

于 2013-05-13T07:19:05.990 回答