Como usar o pprint para imprimir um objeto usando o método __str __ (próprio) intern

Eu tenho um script Python que processa um arquivo .txt que contém informações de uso do relatório. Gostaria de encontrar uma maneira de imprimir corretamente os atributos de um objeto usando a função pprint (vars (objeto)) da pprin

O script lê o arquivo e cria instâncias de uma classe Report. Aqui está a turma.

class Report(object):
    def __init__(self, line, headers):
        self.date_added=get_column_by_header(line,headers,"Date Added")
        self.user=get_column_by_header(line,headers,"Login ID")
        self.report=get_column_by_header(line,headers,"Search/Report Description")
        self.price=get_column_by_header(line,headers,"Price")
        self.retail_price=get_column_by_header(line,headers,"Retail Price")

    def __str__(self):
        from pprint import pprint
        return str(pprint(vars(self)))

Gostaria de poder imprimir instâncias do relatório de forma limpa a-la-pprin

for i,line in enumerate(open(path+file_1,'r')):
    line=line.strip().split("|")
    if i==0:
        headers=line

    if i==1:
        record=Report(line,headers)
        print record

Quando eu ligo

print record

para uma única instância do Report, é isso que recebo no shell.

{'date_added': '1/3/2012 14:06',
'price': '0',
'report': 'some_report',
'retail_price': '0.25',
'user': 'some_username'}
 None

Minha pergunta é dupla.

Primeiro, essa é uma maneira boa / desejada de imprimir os atributos de um objeto de maneira limpa? Existe uma maneira melhor de fazer isso com ou sem pprint?

Segundo, por que

None

imprimir para o shell no final? Estou confuso de onde isso vem.

brigado por qualquer dic

questionAnswers(10)

yourAnswerToTheQuestion