1

「わかりました、ありがとう」を印刷しようとしています。シェルで実行すると、別の行に印刷され、「ありがとう」が「大丈夫」の前に印刷されます。誰かが私が間違っていることを助けることができますか?

>>> 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())
4

4 に答える 4

0

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'が呼び出され、'thanks'が出力されます。

次に、ステートメントをb進行中に印刷します。これにより、「ok」が印刷されます。

于 2013-01-18T03:13:07.290 に答える
0

問題は、を呼び出すときにtest.a()、文字列を出力するのではなく、出力することです。コードを変更してこれを行うと、問題なく機能します。

 def a(self):
     return 'thanks'

endあなたがあなたの質問で言ったことによると、あなたがにキーワード引数を使う必要はないようですprinttest.a()別の引数として渡すだけです:

print('okay,', test.a())
于 2013-01-18T03:16:45.983 に答える
0

「わかりましたありがとう」を出力するには、 One.a() が print ステートメントだけではなく文字列を返す必要があります。

また、Two.b の "test" パラメータが何のためにあるのかわかりません。すぐにクラス One のインスタンスになるように上書きするためです。

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
>>>>
于 2013-01-18T03:28:52.947 に答える
0

クラス1を変更する必要がないことを意味するので、このようなことを試してみます。これにより、変更する必要があるクラスの量が減り、変更とエラーの範囲が分離されます。クラス1の動作を維持します

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

class Two:
     def b(self, test):
         test = One()
         print('okay', end=' ')
         test.a()
于 2013-01-18T11:31:18.330 に答える