2016-02-22 131 views
0

我可能會問一個愚蠢的問題。我剛開始學習Python。寫入python文件

我有一個簡單的Python腳本,它有兩個方法來定義一個類:add_coursewrite_to_file

class School: 
    courses=["Math","Physics","Chemical"] 

    def __init__(self): 
     return 

    def add_course(self, course): 
     if course not in self.course: 
      self.course.append(course) 

    def write_to_file(): 
     course_file = open('courses.csv', 'w+') 
     wr = csv.writer(course_file, delimiter='\t') 
     writer.writerow(self.courses) 

// create a School instance 
school = School() 

// add course 
school.add_course("test") 
school.add_course("test2") 
school.add_course("test") 

// write course to file 
school.write_to_file() 

我運行上面的腳本,然後,我打開courses.csv文件,我不知道看到「測試」和「測試2」,但我可以看到課程「數學」,「物理學」,「化學」爲什麼?

+0

爲什麼downvote我的問題的工作的?請給出一個理由,我不明白,我可能問了一個愚蠢的問題,但我在Python中很新。 –

+1

定義要由init方法中的類中的所有方法共享的類變量。我建議找到一個關於python類的基礎教程 – Dan

+0

@Dan,謝謝,你的意思是我應該在init方法中放置'courses'列表? –

回答

5

目前已添加課程作爲類級別的屬性,但在嘗試訪問它作爲實例屬性,所以你必須舉動課程初始化__init__方法,如下面的代碼片段:

def __init__(self): 
    self.courses = ["Math", "Physics", "Chemical"] 

而且你必須修改add_course方法追加項目爲self.coursesself.course

def add_course(self, course): 
     if course not in self.courses: 
      self.courses.append(course) 

請參閱SO Python: Difference between class and instance attributes問題以獲取有關如何以及何時使用每種屬性類型的更多說明。

+0

非常感謝您指出我的問題。我非常感激這不僅僅是讓我看到那些負面投票的無助感。 –

+0

@ Leem.fin不客氣!我希望答案能指出你正確的方向)祝你好運。 –

0

我發現在你的代碼片段一些錯誤,因爲你是新來的Python,所以想發佈代碼 -

class School: 
    courses=["Math","Physics","Chemical"] 

    def __init__(self): 
     return 

    def add_course(self, course): 
     if course not in self.courses: 
      self.courses.append(course) 

    def write_to_file(self): 
     with open('courses.csv', 'w+') as course_file: 
     wr = csv.writer(course_file, delimiter='\t') 
     wr.writerow(self.courses) 

我changes-

1. def write_to_file(self) 
2.if course not in self.courses: 
       self.courses.append(course) 
3. wr.writerow(self.courses)