按字母顺序输出对象属性和值

时间:2015-09-11 15:08:39

标签: python class python-3.x

我需要生成一系列简单对象的导出(csv),如下所示:

__dict__

按属性按顺序列出属性/值对的最简单方法是什么? sampleWindow.attron(curses.A_REVERSE | curses.color_pair(color_pair_number)) sampleWindow.addstr(begin_y + 3, begin_x + 48, ' ') sampleWindow.attroff(curses.A_REVERSE | curses.color_pair(color_pair_number)) 每次都会更改订单。

1 个答案:

答案 0 :(得分:2)

您可以在vars()上使用self,然后对项目进行排序:

sorted(vars(self).items())

然后,它会为您提供(attributename, value)对的排序列表。

但是,如果您的课程仅仅是4个相关数据点的容器,那么请考虑使用namedtuple class

from collections import namedtuple

TRX = namedtuple('TRX', ('file_name', 'bank', 'trans_type', 'account'))

这将按命名顺序列出属性:

>>> from collections import namedtuple
>>> TRX = namedtuple('TRX', ('file_name', 'bank', 'trans_type', 'account'))
>>> TRX('foo.txt', 'Bar PLC', 'withdrawal', '1234xyz')
TRX(file_name='foo.txt', bank='Bar PLC', trans_type='withdrawal', account='1234xyz')

因为实例是序列(实际上是tuple的子类),所以您可以将它们直接传递给csv.writer().writerow() call;同时,您可以使用instance.bankinstance.file_name来访问字段。

另一种方法是使用词典,并使用csv.DictWriter()来处理顺序(fieldnames参数确定顺序)。