我对python非常陌生,我试图将属性从csv文件传递到一个类中,然后我试图从那个类中打印一个特定的属性。
这是我的尝试,但我意识到我离正确的解决方案还很远。
import csv
class Pokemon:
def __init__(self, name, type1, type2, Atk, Def, SpAtk, SpDef, Spd, Health):
self.name = name
self.type1 = type1
self.type2 = type2
self.Atk = Atk
self.Def = Def
self.SpAtk = SpAtk
self.SpDef = SpDef
self.Spd = Spd
self.Health = Health
def pokeprint(self):
print(f"{self.Atk}")
Pokemon_list = []
with open('Pokemon.csv', 'r') as f:
reader = csv.reader(f)
next(reader, None)
for row in reader:
Pokemon_list.append(Pokemon(row[0], row[1], row[2], int(row[3]), int(row[4]), int(row[5]), int(row[6]), int(row[7]), int(row[8])))
pokeprint(Bulbasaur)
下面是csv文件中的几行:
Bulbasaur,Grass,Poison,45,49,49,65,65,45
Ivysaur,Grass,Poison,60,62,63,80,80,60
Venusaur,Grass,Poison,80,82,83,100,100,80
3条答案
按热度按时间bttbmeg01#
一个可能的解决方案是创建一个口袋妖怪字典,其中键是口袋妖怪的名称,值是类
Pokemon
的示例。例如:图纸:
ao218c7q2#
另一种方法是让每个Pokemon类示例维护一个表示CSV文件中的列和相关值的字典。
重写__str__,使其返回示例字典的字符串表示。
重写__getitem__和__getattr__以给予获取单个列数据的方便机制。
给定一个CSV文件,它看起来像:
那...
输出:
im9ewurl3#
另一种方法使用
DictReader
并将CSV字段作为参数传递。使用__repr__
和__str__
允许类以调试和用户的方式显示自己:输出: