CSVファイルからクラスを作る方法

例えば、こんなCSVから、ヘッダ部分の属性を持つ、データクラスを作りたいとします。

name,hp,mp,str,vit,agi,dex,int,men
hoge,100,15,10,9,4,6,4,6
piyo,80,0,9,6,4,7,6,4
momo,90,50,8,8,3,3,10,12
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import csv

class Chara:
	def __init__(self, dict):
		for key, value in dict.items():
			if value.isdigit():
				value = int(value)
			setattr(self, key, value)
	def __str__(self):
		return "Name:%s, Hp:%d, Mp:%d, Str:%d, Vit:%d, Agi:%d, Dex:%d, Int:%d, Men:%d"%(
			self.name, self.hp, self.mp, self.str, self.vit, self.agi, self.dex, self.int, self.men)

def main():
	f = file("test.csv")
	headers = f.readline().strip().split(",")
	dictReader = csv.DictReader(f, headers)
	
	for dict in dictReader:
		chara = Chara(dict)
		print chara
if(__name__ == "__main__"):
	main()

 
実行結果です。

Name:hoge, Hp:100, Mp:15, Str:10, Vit:9, Agi:4, Dex:6, Int:4, Men:6
Name:piyo, Hp:80, Mp:0, Str:9, Vit:6, Agi:4, Dex:7, Int:6, Men:4
Name:momo, Hp:90, Mp:50, Str:8, Vit:8, Agi:3, Dex:3, Int:10, Men:12

値が文字列だけなら、コンストラクタで、

self.__dict__ = dict

してやるだけで、OKです。