如何调用Python中的另一种方法类方法?(How to call a class method i

2019-10-17 15:04发布

我想打印“好的,谢谢”。 当我在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())

Answer 1:

你的问题是,当你调用test.a()您打印字符串,而不是返回。 改变你的代码做到这一点,它会工作得很好:

 def a(self):
     return 'thanks'

通过你在你的问题说,它似乎并不像你需要使用的end关键字参数来print 。 只是通过test.a()的另一种说法:

print('okay,', test.a())


Answer 2:

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前进,这导致“好”被打印。



Answer 3:

要打印“好感谢”你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
>>>>


Answer 4:

我会尝试这样的事情,因为它意味着你不必改变一级。 这减少了类,你必须改变量,这隔绝变化和误差范围; 并保持一类的行为

class One:
     def a(self):
         print('thanks')

class Two:
     def b(self, test):
         test = One()
         print('okay', end=' ')
         test.a()


文章来源: How to call a class method in another method in python?