簡體   English   中英

attributeError: 'list' object 沒有屬性.....

[英]attributeError: 'list' object has no attribute.....

我收到 attributeError,但我不明白....

class User():

    def __init__(self, first, last, age):
        self.first = first
        self.last = last
        self.age = age
        self.login_attempt = 0

class Admin(User):

    def __init__(self, first, last, age):
        super().__init__(first, last, age)
        self.privilages = Privilages()


class Privilages():

    def __init__(self, privilages = ''):
        self.privilages = []

    def show_privilages(self):
        print("There are the privilages... : ")
        if self.privilages:
            for privilage in self.privilages:
                print("- " + privilage)
        else:
             print("The user has no privilages. ")


sarah.privilages = ['can add post', 'can delete post']
sarah.privilages.show_privilages()

我不確定我在這里遺漏了什么,我在列表上使用循環到 go 並將其打印出來,但是我不斷收到“'list'object 沒有屬性'show_privileges'”的錯誤

您正在為sarah.privilages分配一個列表,因此它肯定沒有show_privilages方法。 您應該使Admin__init__方法將特權列表作為參數,以便它可以傳遞給Privilages__init__方法來初始化其privilages屬性:

class Admin(User):
    def __init__(self, first, last, age, privilages):
        super().__init__(first, last, age)
        self.privilages = Privilages(privilages)


class Privilages():
    def __init__(self, privilages):
        self.privilages = privilages

    def show_privilages(self):
        print("There are the privilages... : ")
        if self.privilages:
            for privilage in self.privilages:
                print("- " + privilage)
        else:
             print("The user has no privilages. ")

sarah = Admin('sarah','mary','smith', ['can add post', 'can delete post'])
sarah.privilages.show_privilages()

輸出:

There are the privilages... : 
- can add post
- can delete post

寫一個單獨的 Privileges class。class 應該有一個屬性,privileges,它存儲一個字符串列表。 將 show_privileges() 方法移動到此 class。在 Admin class 中創建一個 Privileges 實例作為屬性。創建一個新的 Admin 實例並使用您的方法顯示其特權

class User():
    """Represent a simple user profile."""

    def __init__(self, first_name, last_name, username, email, location):
        """Initialize the user."""
        self.first_name = first_name.title()
        self.last_name = last_name.title()
        self.username = username
        self.email = email
        self.location = location.title()

    class Admin(User):
    def __init__(self, first_name, last_name, username, email, location):
        super().__init__(first_name, last_name, username, email, location)
        #Initialize an empty set of privileges.
        self.privileges= Privileges()

class Privileges():
    def __init__(self,privileges =[]):
        self.privileges = privileges

    def Show_privileges(self):
        print("\nPrivileges: ")
        if self.privileges:
            for privilege in self.privileges:
                print("- " + str(privilege))
        else:
            print("- this user has no privileges.")

        eric = Admin('suraj', 'boi', 'e_mater', 'e_matthes100@example.com', 'alaska')
    eric.describe_user()
    
    eric.privileges.Show_privileges()
    print("\nAdding privileges...")
    eric_privileges = [
        'can reset passwords',
        'can moderate discussions',
        'can suspend accounts',
        ]
    
    eric.privileges.privileges = eric_privileges
    eric.privileges.Show_privileges()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM