我正在尝试打印“好的,谢谢”。当我在 shell 上运行它时,它会打印在单独的行上,并且“谢谢”打印在“好的”之前。有人能帮我解决我做错的地方吗?
>>> test1 = Two() >>> test1.b('abcd') >>> thanks >>> okay
我的代码
class One: def a(self): print('thanks') class Two: def b(self, test): test = One() print('okay', end = test.a())
您的代码问题在于 print 函数中的参数 end 被错误地使用了。print 的 end 参数应指定字符串,表示在打印完内容后要添加的内容(默认是换行符 \n)。然而,您将 end 赋值为 test.a(),这是一个方法调用,返回值为 None,因此导致了意外行为。
print
end
\n
test.a()
None
如果您的目标是顺序打印“好的,谢谢”,可以修改如下:
class One: def a(self): print('thanks') # 打印“thanks” class Two: def b(self, test): test = One() print('okay', end=' ') # 打印“okay”,并用空格结束 test.a() # 调用 a() 打印“thanks” # 测试代码 test1 = Two() test1.b('abcd')
运行上述代码后,您会得到以下输出:
okay thanks
end=test.a()
thanks
由于 a() 没有显式返回值,默认返回 None,print 函数的 end 参数变成了 None,引发了非预期行为。
a()
正确的打印顺序:
如果您希望 Two.b 方法能直接返回组合字符串,而不是依赖于 print 的顺序,可以改写为:
Two.b
class One: def a(self): return 'thanks' class Two: def b(self, test): test = One() return f"okay {test.a()}" # 测试代码 test1 = Two() print(test1.b('abcd'))
输出:
这样可以更清晰地控制输出顺序,同时减少副作用。