2017-09-26 12 views
0
class User(): 

    def __init__(self,first,last,sex,age): 
    self.first_name=first 
    self.last_name=last 
    self.sex = sex 
    self.age =age 
    self.login_attempts = 0 

    def describe_users(self): 
    print(self.first_name + " " +self.last_name) 
    print("Gender: " + self.sex) 
    print("Age: " + str(self.age)) 

    def greeting_users(self): 
    print("Welcome, " + self.first_name + " " + self.last_name + "!\n") 

    def increment_login_attempts(self): 
    self.login_attempts += 1 
    print("Login attempts: " + str(self.login_attempts)) 

    def reset_login_attempts(self): 
    self.login_attempts = 0 
    print("Login has been reset") 

class Privileges(): 

    def __init__(self,privileges): 
    self.privileges= ['can add post','can delete post', 'can ban user'] 

    def show_privileges(self): 
    for x in self.privileges: 
     print("The Admin can " + x) 

class Admin(User): 

    def __init__(self,first,last,sex,age): 
    """Initialize attributes of the parent class""" 
    super().__init__(first,last,sex,age) 
    self.privileges = Privileges() 

person_admin= Admin('Kevin','Mark','M',30) 
person_admin.Privileges.show_privileges() 

この問題を解決するには問題があります。私はエラーTypeerrorを取得し続けます。問題がどこにあるのか知っている人がいらっしゃいますか?この問題の目標は、 "Admin"クラスの属性として "Privileges"インスタンスを作成することです。その後、 "Admin"の新しいインスタンスを作成し、 "show_privileges"を使用して権限を表示します。Pythonクラッシュコース9-8、属性の問題

+2

あなたが実際に見ている正確なエラーを投稿する必要があります。これは、人々があなたを助けてくれることをはるかに容易にします。 – jszakmeister

答えて

1

正確なエラーは、おそらくこれです:

Traceback (most recent call last): 
    File "python", line 42, in <module> 
    File "python", line 40, in __init__ 
TypeError: __init__() missing 1 required positional argument: 'privileges' 

引数を必要とする権限のコンストラクタを書いてきましたが、管理者のためのコンストラクタで権限をインスタンス化するときに、その引数を渡されていないためにです。ただ、これに権限のコンストラクタを変更:

def __init__(self): # removed argument "privileges" 
    self.privileges = ['can add post','can delete post', 'can ban user'] 

を次にあなたは小文字する権限たいと思う最後の行に、あなたはインスタンスではなくクラスを参照しているので。

person_admin.privileges.show_privileges() 

working code hereをチェックアウトすることができます。

関連する問題