Python速成课程9-8

时间:2016-10-10 02:19:47

标签: python-3.x

我正在阅读Eric Matthes撰写的“Python Crash Course”一书,而且我已经坚持到了第8天“自己试试”#39;第9章

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

到目前为止,我输入了这个,但是每次运行它都会得到相同的错误

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'

有人可以帮助我吗?我输错了什么?

2 个答案:

答案 0 :(得分:1)

你在Priviledges()类中留下了一个错字,self.priviledges2应该是self.priviledges。

class Priviledges():
def __init__(self):
    self.priviledges2 = ['can add post', 'can delete post',
                         'can ban user', 'can unban user']

答案 1 :(得分:0)

在类中,只要将对象作为该类调用,就会运行__init__()函数。这意味着当您调用该类时,需要传递__init__函数中所需的任何参数。在“权限”类定义中,__init__除了selfprivileges之外还会使用一个参数。但是,在Admin类定义中,您正在调用privileges而没有任何参数。但是,由于您似乎甚至没有使用privileges类中的参数,请考虑将其删除。

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