2016-10-10 4 views
0

나는 에릭 MATTHES에 의해 도서 파이썬 충돌 과정을 통해 갈거야, 나는 8에 붙어 나는, 9파이썬 충돌 코스 9-8

class Priviledges(): 
    def __init__(self, priviledges): 
     self.priviledges2 = ['can add post', 'can delete post', 
          'can ban user', 'can unban user'] 

    def show_priviledges(self): 
     for priviledge in self.priviledges: 
      print(priviledge) 

class User(): 
    def __init__(self, first_name, last_name, username, age): 
     self.first_name = first_name 
     self.last_name = last_name 
     self.username = username 
     self.age = age 

    def describe_user(self): 
     print(self.first_name.title()) 
     print(self.last_name.title()) 
     print(self.username) 
     print(self.age) 

    def greet_user(self): 
     print('Hello, ' + self.first_name.title() + ', how are you doing?') 

class Admin(User): 
    def __init__(self, first_name, last_name, username, age): 
     super().__init__(first_name, last_name, username, age) 
     self.priviledges = Priviledges() 

admin = Admin('1','1','1','1') 
admin.priviledges.show_priviledges() 

지금까지 장을 '스스로를 시도' 이것을 입력하십시오. 그러나 실행할 때마다 동일한 오류가 발생합니다.

Traceback (most recent call last): 
File "C:/Users/DedProtectr/Desktop/Chapter 9 Labs/Lab 9-8.py", line 35, in <module> 
admin = Admin('1','1','1','1') 
File "C:/Users/DedProtectr/Desktop/Chapter 9 Labs/Lab 9-8.py", line 33, in __init__ 
self.priviledges = Priviledges() 
TypeError: __init__() missing 1 required positional argument: 'priviledges' 

누군가 나를 도와 줄 수 있습니까? 무엇을 잘못 입력 했습니까?

+0

'Priviledges' 클래스를 인스턴스화하는 것은 정의에 표시된 것처럼 하나의 인수를 취합니다. 해당 콜 ('Admin .__ init__'에서)은 인자를 사용하지 않습니다. – Evert

+1

대대 : 철자는 특권입니다. 아니 'd'. – Evert

+0

사실,'Priviledges .__ init__'의'privilegedges__' 인수는 절대로 사용되지 않기 때문에'__init__'에서 그것을 제거하는 것을 고려하십시오. – Evert

답변

0

클래스의 경우 __init__() 함수는 해당 클래스로 개체가 호출 되 자마자 실행됩니다. 즉, 해당 클래스를 호출 할 때 __init__ 함수에 필요한 인수가 전달되어야합니다. '특권'클래스 정의에서 __init__self, privileges 이외의 인수를 취합니다. 그러나 Admin 클래스 정의에서는 인수없이 privileges을 호출합니다. 그러나 privileges 클래스의 인수를 사용하지 않는 것처럼 보이므로 제거하는 것이 좋습니다.

class Priviledges(): 
    def __init__(self): 
     self.priviledges2 = ['can add post', 'can delete post', 
          'can ban user', 'can unban user'] 

    def show_priviledges(self): 
     for priviledge in self.priviledges: 
      print(priviledge) 

class User(): 
    def __init__(self, first_name, last_name, username, age): 
     self.first_name = first_name 
     self.last_name = last_name 
     self.username = username 
     self.age = age 

    def describe_user(self): 
     print(self.first_name.title()) 
     print(self.last_name.title()) 
     print(self.username) 
     print(self.age) 

    def greet_user(self): 
     print('Hello, ' + self.first_name.title() + ', how are you doing?') 

class Admin(User): 
    def __init__(self, first_name, last_name, username, age): 
     super().__init__(first_name, last_name, username, age) 
     self.priviledges = Priviledges() 

admin = Admin('1','1','1','1') 
admin.priviledges.show_priviledges() 
1

Priviledges() 클래스에서 오타가 남았으므로 self.priviledges2는 self.priviledges 여야합니다.

class Priviledges(): 
def __init__(self): 
    self.priviledges2 = ['can add post', 'can delete post', 
         'can ban user', 'can unban user']