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

Correct usage of __str__ method for a dictionary (kwargs)

我的任务是正确打印 class 的 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='jhony@smith.com')
        print (jhon)

我最后需要有:

Additional information:
     telegram : @jhony
     email : jhony@smith.com

但我只有:

我真的尝试过遍历它,创建列表,但我一无所获,因为 ___str___ 方法只能使用 str 个对象。我如何通过 kwargs 参数并以 key : value?

的格式获取它

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

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.items()]))