attributeError: у объекта 'list' нет атрибута ..... - PullRequest
0 голосов
/ 29 ноября 2018

Я получаю 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()

Я не уверен, что мне здесь не хватает, я использовал циклы, чтобы просмотреть список и распечатать егоТем не менее я получаю сообщение об ошибке "список" объект не имеет атрибута "show_privileges" "

1 Ответ

0 голосов
/ 29 ноября 2018

Вы назначаете список на sarah.privilages, поэтому у него наверняка нет метода show_privilages.Вы должны заставить __init__ метод Admin принять список привилегий в качестве параметра, чтобы он мог перейти к методу __init__ Privilages для инициализации его атрибута 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
...