列表打印问题



好的,我正在尝试编写一个代码来显示管理员权限列表。我编写了代码,但它在任何列表项之前都给了我一个奇怪的显示:

输入代码:

class Privileges:
def __init__(*privileges):
privileges

def show_privileges(*privileges):
print("these are your privileges:")
for privilege in privileges:
print(f"t{privilege}")

class Admin(User):
def __init__(self, first_name, last_name, age, username):
super().__init__(first_name, last_name, age, username)
self.privileges = Privileges()

Admin = Admin('Admin', '', '' ,'')
Admin.privileges.show_privileges('can add post', 'can delete post', 
'can ban user')

输出:

these are your privileges:
<__main__.Privileges object at 0x7facd3c5f4f0>
can add post
can delete post
can ban user
函数show_privileges(*privileges)被赋予self作为第一个参数。这就是你看到的奇怪的输出,自我正在被打印。您需要在定义中包含self作为:
def show_privileges(self, *privileges):
print("these are your privileges:")
for privilege in privileges:
print(f"t{privilege}")

或者,您可以对列表进行切片以避免第一个元素:

def show_privileges(*privileges):
print("these are your privileges:")
for privilege in privileges[1:]:
print(f"t{privilege}")

我认为第一种选择更为典型
要了解更多关于self及其在python中的工作原理,您可以阅读codewelldev提到的教程。

最新更新