如何根据python中的字符串获取class属性

2024-06-01 09:46:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python中有一个类,我想根据如下字符串获得几个属性中的一个:

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

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

我怎样才能做到这一点?你知道吗


Tags: 字符串selfnumberreturn属性initmydef
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)

(未经测试)

有了它,您可以访问绑定的数据和属性(如果需要)。你知道吗

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

或使用新样式格式:

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

还要注意的是,如果您有许多这样的属性,您也许应该考虑存储一个列表并从它们的索引中检索元素。你知道吗

相关问题 更多 >