2016-04-04 15 views
0

Ich spiele mit Python-Klassenvererbung herum, aber ich kann nicht scheinen, die Kindklasse zu arbeiten.Probleme mit der Vererbung der Python-Klasse

Die Fehlermeldung, die ich hier bekommen:

must be a type not classobj 

Hier ist der Code:

class User(): 
    """Creates a user class and stores info""" 
    def __init__(self, first_name, last_name, age, nickname): 
     self.name = first_name 
     self.surname = last_name 
     self.age = age 
     self.nickname = nickname 
     self.login_attempts = 0 

    def describe_user(self): 
     print("The users name is " + self.name.title() + " " + self.surname.title() + "!") 
     print("He is " + str(self.age) + " year's old!") 
     print("He uses the name " + self.nickname.title() + "!") 

    def greet_user(self): 
     print("Hello " + self.nickname.title() + "!") 

    def increment_login_attempts(self): 
     self.login_attempts += 1 

    def reset_login_attempts(self): 
     self.login_attempts = 0 

class Admin(User): 
    """This is just a specific user""" 
    def __init__(self, first_name, last_name, age, nickname): 
     """Initialize the atributes of a parent class""" 
     super(Admin, self).__init__(first_name, last_name, age, nickname) 

jack = Admin('Jack', 'Sparrow', 35, 'captain js') 
jack.describe_user() 

ich mit Python 2.7

+0

http://stackoverflow.com/questions/54867/what-is-the-difference-between-old-style-and-new-style-classes-in-python – danidee

Antwort

2

Die User Klasse von erben müssen object wenn Sie später auf super() anrufen werden.

class User(object): 

... 

Python2 unterscheidet zwischen alten Stil-Klassen, die nicht von object und neuen Stil Klassen haben erben, die tun. Es ist am besten, neue Stilklassen in modernen Code zu verwenden, und es ist nie gut, sie in einer Vererbungshierarchie zu mischen.