2016-07-28 24 views
-2

Ich versuche, eine direkte Klasse in Python zu instanziieren.Instanziieren einer Klasse - Python

class Student: 
    def __init__(self, name, age, major, gpa): 
     name = self.name 
     age = self.age 
     major = self.major 
     gpa = self.gpa 


def main(): 
    student_1 = Student('John', 31, 'History', 3.4) 
    student_2 = Student('George', 31, 'English', 3.5) 
    print student_1.name, student_2.name 

Der Fehler, den ich bekommen ist:

AttributeError: Student instance has no attribute 'name'

+1

self.name = name und so weiter, Sie haben invertierte Variable assigments – Alex

+3

Sie haben Ihre Zuordnung Anweisung umgekehrt. Es sollte 'self.name = name' sein. –

+0

* facepalm * ... danke an alle – Craig

Antwort

3

Wechsel:

name = self.name 
    age = self.age 
    major = self.major 
    gpa = self.gpa 

zu:

self.name = name 
    self.age = age 
    self.major = major 
    self.gpa = gpa 
1

Sie bekommen diesen Fehler, da Sie Attribute zugreifen, bevor sie zu definieren. Das ist, weil Sie Ihre Aufgaben der falsche Weg haben - Sie versuchen, die (undefined) Attribute auf die Argumente statt umgekehrt zuzuordnen:

def __init__(self, name, age, major, gpa): 
    self.name = name 
    self.age = age 
    self.major = major 
    self.gpa = gpa