[英]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.