attributeError:“list”对象没有属性。。。。。

2024-10-03 11:23:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到了属性错误,但我不明白。。。。在

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()

我不知道我在这里遗漏了什么,我用循环来检查列表并将其打印出来,但是我一直收到错误消息“'list'对象没有属性'show'u privileges'”


Tags: selfage属性initdefshow错误class
1条回答
网友
1楼 · 发布于 2024-10-03 11:23:33

您将一个列表分配给sarah.privilages,因此它肯定没有show_privilages方法。您应该使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()

该输出:

^{pr2}$

相关问题 更多 >