__str__方法正确使用字典(kwargs)

问题描述 投票:0回答:1

我有一个任务来正确打印类的kwargs参数。这是我的代码:

 class Contact:
        def __init__(self, name, surname, number, selected=None, **kwargs):
            self.name=name
            self.surname=surname
            self.number=number
            self.selected=selected
            self.additional=kwargs
        def __str__(self):
            if self.selected==None:
                selected='No'
            else:
                selected='Yes'
            return 'Name: ' + self.name+'\n' + \
                   'Surname: ' + self.surname+ '\n' + \
                   'Phone: ' + self.number + '\n' + \
                   'In selected: ' + selected + '\n' + \
                   'Additional information: ' + '\n' + \
                   str(self.additional.keys()) + '\n' + \
                   str(self.additional.values())

    if __name__=='__main__':
        jhon = Contact('Jhon', 'Smith', '+71234567809', telegram='@jhony', email='[email protected]')
        print (jhon)

我最后需要具备:

Additional information:
     telegram : @jhony
     email : [email protected]

但是我所能拥有的是:

enter image description here

我真的尝试过尝试,创建列表,但我一无所获,因为___str___方法只能使用str对象。如何查看kwargs参数并将其采用key : value的格式?

python python-3.x string kwargs
1个回答
0
投票

您需要遍历dict引用的self.additional

def __str__(self):
    return ('Name: ' + self.name + '\n'
            + 'Surname: ' + self.surname+ '\n' + 
            + 'Phone: ' + self.number + '\n' +
            + 'In selected: ' + selected + '\n' +
            + 'Additional information: ' + '\n' + 
            + '\n'.join([f'     {k}: {v}' for k, v in self.additional]))
© www.soinside.com 2019 - 2024. All rights reserved.