簡體   English   中英

如何在python中的另一個方法中調用類方法?

[英]How to call a class method in another method in python?

我正在嘗試打印“好,謝謝”。 當我在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在處理結果表達式之前按順序評估函數。

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 print語句繼續進行,導致打印“ okay”。

您的問題是,當您調用test.a() ,您將打印一個字符串,而不返回它。 更改您的代碼即可執行此操作,它將正常工作:

 def a(self):
     return 'thanks'

按照您在問題中所說的說,似乎不需要使用end關鍵字參數來進行print 只需通過test.a()作為另一個參數:

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

要打印“好,謝謝”,您的One.a()應該返回一個字符串,而不是單獨返回一個打印語句。

同樣也不確定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
>>>>

我會嘗試這樣的事情,因為這意味着您不必更改Class One。 這減少了您必須更改的類的數量,從而隔離了更改和錯誤的范圍; 並保持第一類的行為

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM