2009-12-05 8 views
0

저는 파이썬에 매우 새로운 것이므로 이것을 해결할 수 있어야합니다. 나는 raw_input을 통해 모듈과 등급이 무엇인지 물어보고 이것을 학생 클래스에 이미 정의 된 사전으로 넣고 싶습니다. 나는 무엇을 해야할지 전혀 모른다! 미리 감사드립니다!클래스에서 선언 된 사전에 파이썬 raw_input

students = [] # List containing all student objects (the database) 

def printMenu(): 
    print "------Main Menu------\n" "1. Add a student\n" "2. Print all students\n" "3. Remove a student\n" "---------------------\n" 


class Student: 
    firstName = "" 
    lastName = "" 
    age = 0 
    studentID = "" 
    degree = "" 
    grades = {"Module Name":"","Grade":""} 

    def setFirstName(self, firstName): 
     self.firstName = firstName 

    def getFirstName(self): 
     return self.firstName 

    def setLastName(self, lastName): 
     self.lastName = lastName 

    def getLastName(self): 
     return self.lastName 

    def setDegree(self,degree): 
     self.degree = degree 

    def getDegree(self): 
     return self.degree 

    def setGrades(self, grades): 
     self.grades = grades 

    def getGrades(self): 
     return self.grades 

    def setStudentID(self, studentid): 
     self.studentid = studentid 

    def getStudentID(self): 
     return self.studentid 

    def setAge(self, age): 
     self.age = age 

    def getAge(self): 
     return self.age 


def addStudent(): 
     count = 0 
     firstName = raw_input("Please enter the student's first name: ") 
     lastName = raw_input("Please enter the student's last name: ") 
     degree = raw_input("Please enter the student's degree: ") 
     while count != -1: 
      student.grades = raw_input("Please enter the student's module name: ") 
      #student.grades["Grade"] = raw_input("Please enter the grade for %: " % grades) 

     studentid = raw_input("Please enter the student's ID: ") 
     age = raw_input("Please enter the student's age: ")   

     student = Student() # Create a new student object 
     student.setFirstName(firstName) # Set this student's first name 
     student.setLastName(lastName) 
     student.setDegree(degree) 
     student.setGrades(grades) 
     student.setStudentID(studentid) 
     student.setAge(age) 

     students.append(student) # Add this student to the database 
+0

당신은 필요하지 않습니다를 파이썬에서 자바 스타일 getters/setters를 작성하려면 클래스 외부에서 모든 변수에 액세스 할 수 있습니다. (student라고하는 학생이 있다고하면 student.firstName ("Bill")은 student.firstName = "Bill"으로 수행 할 수 있습니다. 그 값을 얻기 위해 동일하게 진행됩니다.) –

답변

2

몇 가지 : 클래스의 초기화가 __init__ 방법으로 속성

  1. 이동 : 제프리가 말한대로

  2. 모든 getter 및 setter 제거하십시오.

  3. 를 사용하여 모듈의 키와 같은 이름과 등급 값으로 가지고있는 딕셔너리 :

일부 코드 조각 :

def __init__(self, firstName, lastName, age, studentID, degree): 
    self.firstName = firstName 
    self.lastName = lastName 
    ... 
    self.grades = {} 

과 :

while True: 
     module_name = raw_input("Please enter the student's module name: ") 
     if not module_name: 
      break 
     grade = raw_input("Please enter the grade for %s: " % module_name) 
     student.grades[module_name] = grade 
+0

+1 : @ Carl : 그게 당신이 필요합니다. 해야 할 것! 주의 사항 : student.grades는 학생 객체 생성 전에 액세스된다. – luc

+0

클래스 속성을 __init__ 메쏘드로 옮기는 이유는 다음과 같다. 클래스 내에서 클래스 속성을 선언하면 (거의) 정적 속성이된다. - s1 = Student() ; s2 = 학생(); s1.grades [ "foo"] = 123; s2.grades는 이제 Student.grades와 마찬가지로 { "foo": 123}이됩니다. – AKX

+0

@luc : 감사합니다. 내 부분에 대한 감독이었습니다. 그것을 고정시키는 것은 OP를위한 운동으로 남아 있습니다. (특히 이것은 숙제와 같은 냄새가납니다.) –

관련 문제