函数在打印列表时打印空值?
function prints null value when printing a list?
一边摆弄书中的例子:
class Quick():
def __str__(self):
return "\n".join(f"{k}: {v}" for k, v in vars(self).items())
class User(Quick):
def __init__(self, first, last, location, gender):
super().__init__()
self.first = first
self.last = last
self.location = location
self.gender = gender
self.loginattempt = 0
def mmplusattempt(self):
self.loginattempt += 1
def mmresetattempt(self):
self.loginattempt = 0
def __str__(self):
return "\n".join(f"{k}: {v}" for k, v in vars(self).items())
class Admin(User):
def __init__(self, first, last, location, gender):
super().__init__(first, last, location, gender)
self.privileges = ["delete post", "ban user", "shutdown server", "restart server"]
def show(self):
for p in self.privileges:
print(f"This user can: {p}. \n")
admin = Admin("ADMIN", "ADMIN", "SERVER ROOM", "ADMIN")
print(admin.show())
这出于某种原因输出:
This user can: delete post.
This user can: ban user.
This user can: shutdown server.
This user can: restart server.
None
我不确定为什么会打印 None
。更改 show()
以检查空值:
def show(self):
for p in self.privileges:
if p != None:
print(f"This user can: {p}. \n")
仍然输出None
.
我认为循环可能没有像我预期的那样工作,因此在 self.privileges
中添加了一个空值以查看循环是否正确检查了空值:
self.privileges = ["delete post", "ban user", "shutdown server", None, "restart server"]
输出:
└─$ python3 classuser.py
This user can: delete post.
This user can: ban user.
This user can: shutdown server.
This user can: restart server.
None
显然 if 测试工作正常。这个空值是从哪里来的?
show
函数没有 return 任何值
如果 return show
中的某些内容,None
将会消失。
def show(self):
for p in self.privileges:
print(f"This user can: {p}. \n")
return "haha"
一边摆弄书中的例子:
class Quick():
def __str__(self):
return "\n".join(f"{k}: {v}" for k, v in vars(self).items())
class User(Quick):
def __init__(self, first, last, location, gender):
super().__init__()
self.first = first
self.last = last
self.location = location
self.gender = gender
self.loginattempt = 0
def mmplusattempt(self):
self.loginattempt += 1
def mmresetattempt(self):
self.loginattempt = 0
def __str__(self):
return "\n".join(f"{k}: {v}" for k, v in vars(self).items())
class Admin(User):
def __init__(self, first, last, location, gender):
super().__init__(first, last, location, gender)
self.privileges = ["delete post", "ban user", "shutdown server", "restart server"]
def show(self):
for p in self.privileges:
print(f"This user can: {p}. \n")
admin = Admin("ADMIN", "ADMIN", "SERVER ROOM", "ADMIN")
print(admin.show())
这出于某种原因输出:
This user can: delete post.
This user can: ban user.
This user can: shutdown server.
This user can: restart server.
None
我不确定为什么会打印 None
。更改 show()
以检查空值:
def show(self):
for p in self.privileges:
if p != None:
print(f"This user can: {p}. \n")
仍然输出None
.
我认为循环可能没有像我预期的那样工作,因此在 self.privileges
中添加了一个空值以查看循环是否正确检查了空值:
self.privileges = ["delete post", "ban user", "shutdown server", None, "restart server"]
输出:
└─$ python3 classuser.py
This user can: delete post.
This user can: ban user.
This user can: shutdown server.
This user can: restart server.
None
显然 if 测试工作正常。这个空值是从哪里来的?
show
函数没有 return 任何值
如果 return show
中的某些内容,None
将会消失。
def show(self):
for p in self.privileges:
print(f"This user can: {p}. \n")
return "haha"