首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python速成课程9-8

Python速成课程9-8
EN

Stack Overflow用户
提问于 2016-10-10 10:19:47
回答 2查看 570关注 0票数 0

我正在读Eric Matthes写的Python Crash Course这本书,我被困在了第9章的第8章“自己试试”上

代码语言:javascript
复制
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()

到目前为止,我输入了以下内容,但是每次我运行它时都得到相同的错误

代码语言:javascript
复制
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'

有人能帮帮我吗?我打错了什么?

EN

回答 2

Stack Overflow用户

发布于 2016-12-30 10:04:54

您在类Priviledges()中留下了一个拼写错误,self.priviledges2应该是self.priviledges。

代码语言:javascript
复制
class Priviledges():
def __init__(self):
    self.priviledges2 = ['can add post', 'can delete post',
                         'can ban user', 'can unban user']
票数 1
EN

Stack Overflow用户

发布于 2016-10-11 12:09:29

在类中,一旦对象作为类被调用,就会运行__init__()函数。这意味着在调用该类时,需要传递__init__函数中需要的任何参数。在你的“Privileges”类定义中,你的__init__参数不是selfprivileges。但是,在Admin类定义中,调用privileges时根本不带任何参数。但是,由于看起来您甚至没有在privileges类中使用该参数,请考虑删除它。

代码语言:javascript
复制
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()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39950483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档