我正在尝试学习课程,但我不明白为什么我的代码显示“无”?
代码
def __init__(self, name, age):
self.name = name
self.age = age
def introduce(self):
print("Hello my name is " + self.name +" and I am "+ str(self.age) +" years old.")
def crazy_talk(self):
print(self.name +" says I'm a test")
p1 = Person("John", 36)
p2 = Person("Bob", 23)
p3 = Person("Joe", 3)
p4 = Person("John", 17)
p5 = Person("Ronald", 102)
p6 = Person("Kevin", 55)
p7 = Person("Albert", 70)
people_list=[p1,p2,p3,p4,p5,p6,p7]
for human in people_list:<br>
print human.introduce()
输出
你好,我叫约翰,今年36岁。
无
您好,我叫鲍勃,今年23岁。
无
您好,我叫乔,我3岁。
无
您好,我叫约翰,今年17岁。
无
您好,我叫Ronald,今年102岁。
无
您好,我叫凯文,今年55岁。
无
您好,我叫阿尔伯特,今年70岁。
没有
答案 0 :(得分:1)
之所以会这样,是因为在最后一行,您正在打印出调用human.introduce()
方法的返回值。始终为None
。 introduce
方法本身会打印出介绍文本,但不会返回任何返回值。
要解决此问题,请将最后一行更改为human.introduce()
。或者,将introduce()
方法更改为返回(但不打印),然后在最后一行上打印调用introduce()
方法的结果。
答案 1 :(得分:1)
因此,该表达式human.introduce()
不会返回任何内容。
def introduce(self):
print("Hello my name is " + self.name +" and I am "+ str(self.age) +" years old.")
此方法定义表示,当调用该字符串时,该字符串将被打印出来,但实际上不会向该方法的调用者返回任何值,因此None
。
所以在这里,您在哪里调用方法
for human in people_list:
print human.introduce()
对于每个人,您都调用该方法,该方法将打印出字符串,然后该方法将隐式返回None
给调用者。这None
是for循环内的print
所收到的。
如果您希望调用human.introduce()
返回一个可以打印的字符串,则可以将其更改为此
def introduce(self):
return "Hello my name is " + self.name +" and I am "+ str(self.age) +" years old."
这不会产生打印字符串的副作用,但是会将字符串返回给调用者。
(为了您自己的利益,请尽可能过渡到学习python3。Python2.7已经有十多年的历史了,不再受支持)