我想打印“好的,谢谢”。 当我在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())
你的问题是,当你调用test.a()
您打印字符串,而不是返回。 改变你的代码做到这一点,它会工作得很好:
def a(self):
return 'thanks'
通过你在你的问题说,它似乎并不像你需要使用的end
关键字参数来print
。 只是通过test.a()
的另一种说法:
print('okay,', test.a())
print
处理所得到的表达式前为了评估功能。
def a(): print('a')
def b(): print('b')
def c(): print('c')
print(a(), b())
print('a', b())
print ('a', b(), c())
print (a(), 'b', c())
输出:
a
b
(None, None)
b
('a', None)
b
c
('a', None, None)
a
c
(None, 'b', None)
因此,Python是在将其传递给打印之前评估元组。 在评估它,该方法“A”被调用,导致“感谢”被打印。
然后在打印语句b
前进,这导致“好”被打印。
要打印“好感谢”你One.a()应该返回一个字符串,而不是单独的打印语句。
还不能确定什么是在Two.b“测试”参数是,因为你覆盖它是一个类的实例,立即。
class One:
def a(self):
return ' thanks'
class Two:
def b(self):
test = One()
print('okay', end = test.a())
>>>> test1 = Two()
>>>> test1.b()
okay thanks
>>>>
我会尝试这样的事情,因为它意味着你不必改变一级。 这减少了类,你必须改变量,这隔绝变化和误差范围; 并保持一类的行为
class One:
def a(self):
print('thanks')
class Two:
def b(self, test):
test = One()
print('okay', end=' ')
test.a()