2016-10-10 3 views
0

私は、これまでの章9Pythonのクラッシュコース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() 

に「それを自分で試してみてください」私はエリックMatthesの本Pythonのクラッシュコースを通じてつもりだ、と私は8日にこだわっていますこれを入力しますが、実行するたびに同じエラーが発生します

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'クラスのインスタンス化は、定義に示されているように1つの引数をとります。関連するコール( 'Admin .__ init__')は引数を使用しません。 – Evert

+1

大括弧:スペルは特権です。いいえ 'd'。 – Evert

+0

実際、 'Priviledges .__ init__'の' prividges'引数は決して使用されないので、そこで '__init__'から削除することを検討してください。 – Evert

答えて

0

クラスでは、オブジェクトがそのクラスとして呼び出されるとただちに__init__()関数が実行されます。これは、そのクラスを呼び出すときに、__init__関数で必要な引数を渡す必要があることを意味します。あなたの特権クラスの定義では、__init__selfprivileges以外の引数をとります。ただし、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'] 
関連する問題