Как использовать pprint для печати объекта с помощью встроенного метода __str __ (self)?

У меня есть сценарий Python, который обрабатывает файл .txt, содержащий информацию об использовании отчета. Я хотел бы найти способ чистой печати атрибутов объекта с помощью функции pprint (vars (object)) pprint.

Сценарий читает файл и создает экземпляры класса Report. Вот класс.

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)))

Я хотел бы иметь возможность печатать экземпляры Report чисто а-ля-pprint.

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

Когда я вызываю

print record

для единственного экземпляра Report, это то, что я получаю в оболочке.

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

У меня двоякий вопрос.

Во-первых, это хороший / желательный способ аккуратно распечатать атрибуты объекта? Есть ли лучший способ сделать это с помощью pprint или без него?

Во-вторых, почему

None

в конце выводит в оболочку? Я не понимаю, откуда это взялось.

Спасибо за любые советы.

12
задан hernamesbarbara 3 February 2012 в 21:57
поделиться