![](/img/trans.png)
[英]How to load a file that I'll use as class attributes where the order of these attributes can change
[英]How can I change the attributes of my class?
类运动员创建具有属性的对象; 名称,TotalScore,平均,偏差,机会我将对象重命名为玩家。 当我读取这些行时,我希望更改类中的属性,使其与文件中给出的信息匹配。 我已经阅读了一些有关超类的内容,但是我不知道如何合并,在这种情况下使用的方法不正确。 我希望创建的播放器对象如下所示:
player.Name = Donald Duck
player.TotalScore=0
player.Average = 18
player.Deviation = 2
player.Chance = 0.16
class Athlete():
def __init_(self):
self.Name=name
self.TotalScore=0
self.Average=0
self.Deviation=0
self.Chance=0.0
def PlayersFromFile(NameOfInputfile):
#define a list for player objects
PlayerList =[]
file = open(NameOfInputfile,'r')
lines = file.readlines()
for line in lines:
var1, var2, var3,var4 = line.split("\t")
var4 = float(var4.rstrip())
player = Athlete
player.Name = var1
player.Average = float(var2)
player.Deviation = float(var3)
player.Chance =var4
playerList.append(player)
该文件的外观如下:
Donald Duck 18 3 0.16
The Bear 17 4 0.25
Fair Brow 16 5 0.48
对文件进行Som细微更改可能会起作用
class Athlete():
def __init_(self, name=None):
self.Name=name
self.TotalScore=0
self.Average=0
self.Deviation=0
self.Chance=0.0
def PlayersFromFile(NameOfInputfile):
#define a list for player objects
PlayerList =[]
file = open(NameOfInputfile,'r')
lines = file.readlines()
for line in lines:
var1, var2, var3,var4 = line.split("\t")
var4 = float(var4.rstrip())
player = Athlete()
player.Name = var1
player.Average = float(var2)
player.Deviation = float(var3)
player.Chance =var4
playerList.append(player)
请注意,在创建运动员实例时, __init__
函数上的Athlete类中的name参数以及Athlete调用中的双括号。
无论看起来像是self.Chancen
不在文件中的任何属性,您都将具有默认值:
class Athlete():
def __init__(self,name, total_score=0, avg=0, dev=0, chnce=0.0):
self.name = name
self.total_score = total_score
self.average = avg
self.deviation = dev
self.chance = chnce
def players_from_file(input_file):
player_list =[]
with open(input_file) as f:
for line in f:
name, score, avg, dev = line.split("\t")
dev = float(dev.rstrip())
player_list.append(Athlete(name,float(score),float(avg), dev))
return player_list
player = players_from_file("in.csv")
[<__main__.Athlete instance at 0x7f26194c5b00>, <__main__.Athlete instance at 0x7f26194c5ab8>, <__main__.Athlete instance at 0x7f26194c5bd8>]
for player in players:
print(player.name,player.total_score)
('Donald Duck', 18.0)
('The Bear', 17.0)
('Fair Brow', 16.0)
您正在PlayersFromFile方法中定义PlayerList,这意味着该方法完成后将无法访问/删除。
玩家是您正在处理的另一个运动员实例的一个实例,这很混乱。 并为玩家提供了许多创建不需要的新实例的方法。
制作一个具有玩家需要的属性的类,然后为每个玩家创建一个新的实例。
恐怕我不能再回答这个问题了,建议您在基本级别上阅读名称空间和类。
编辑:错过了运动员课程的错误实例化,答案已更正。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.