0
나는 다음과 같습니다 csv 파일이 있습니다Python : 객체의 값이 같습니까?
1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0
2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0
3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0
...
16000;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0
나는 다음과 같은 파이썬 스크립트 작성 : 나는 모든 숫자를 얻을 수 1에서 16000에 내 코드의 첫 번째 인쇄를 들어
import csv
path = 'pathToCSV.csv'
dLst = []
class Datensatz:
#0:schluesse 1:straftat 2:gemeindeSchluessel 3:stadt 4:kreisart 5:erfassteFaelle 6:HZnachZensus
#7:versucheAnzahl 8:versucheInProCent 9:mitSchusswaffeGedroht 10:mitSchusswaffeGeschossen=
#11:aufgeklaerteFaelle 12:aufklaerungsquote 13:tatverdaechtigeInsgesamt 14:tatverdaechtigeM
#15:tatverdaechtigeW 16:nichtdeutscheTatverdaechtigeAnzahl 17:NichtdeutscheTatverdaechtigeInProCent
datensatz =['','','','','','','','','','','','','','','','','','']
def createDatensatz(row):
d = Datensatz()
for i in range(0,17):
d.datensatz[i] = row[i]
return d
def readCSV():
with open(path, 'r', encoding = 'iso-8859-15') as csvfile:
spamreader = csv.reader(csvfile, delimiter=';')
for row in spamreader:
#First print
print(createDatensatz(row).datensatz[0])
dLst.append(createDatensatz(row))
for item in dLst:
#second print
print(item.datensatz[0])
if __name__ == "__main__":
readCSV()
을하는 맞다!
하지만 내 목록에 개체를 추가 한 후 두 번째 인쇄의 경우 마지막 값의 16000 배가됩니다.
16000
16000
16000
...
16000
왜? 어디에 문제가 있습니까?
이'Datensatz.datensatz'가 클래스 멤버와 Datensatz' '의 모든 인스턴스간에 공유됩니다. 클래스에 대해'__init__'을 생성하고 인스턴스 멤버를 초기화해야합니다. – georg