簡體   English   中英

如何在python中從另一個類調用函數

[英]How to call a function from another class in python

class A:
  def add_f(self,a,b):
    return a+b

class B:
  def sum_f(self,a,b,c):
    return A.add_f(a,b) + c

B1= B()    
print B1.sum_f(1,2,3)


Traceback (most recent call last):
File "C:/Users/wxu/Documents/test.py", line 10, in <module>
print B1.sum_f(1,2,3)
File "C:/Users/wxu/Documents/test.py", line 7, in sum_f
return A.add_f(a,b) + c
TypeError: unbound method add_f() must be called with A instance as first argument (got int instance instead)

當我沒有sum_f(self,a,b,c)的自我時,它給了我這個錯誤:

Traceback (most recent call last):
File "C:/Users/wxu/Documents/test.py", line 10, in <module>
print test1.sum_f(1,2,3)
TypeError: sum_f() takes exactly 3 arguments (4 given)

這是為什么? 以及如何從B類的A類調用add_f函數? 謝謝您的幫助。

有幾件事。

  1. 定義類方法時,它們必須self作為第一個參數。
  2. 發生錯誤的部分是您嘗試將B稱為變量的地方。 B是一個類,您必須像其他任何類一樣調用它。 當您在類B中調用A()時,這也適用。

修改后的代碼:

class A:
    def add_f(self, a, b):
        return a + b

class B:
    def sum_f(self, a, b, c):
        return A().add_f(a, b) + c

print B().sum_f(1, 2, 3)

更新:感謝您接受我的建議,但是您仍然缺少一些東西。 在B類中,您從A類中調用了一個方法,但是您也需要使用括號! 在B類中,這樣調用A類:

A().add_f(a, b)

簡單的修復,您只需要打開和關閉類聲明中的方括號,即可使class B class B()成為class B()對A類適用相同的用法)。 同樣,您需要添加某種變量,例如self,作為在類中聲明的每個方法的第一個參數。 您永遠不需要傳遞任何內容來填充self,因為python會為您完成。

至於您的A.add_f問題,您只需要像對待B一樣,將它實例化為A對象,例如A1,然后調用A1的方法。

暫無
暫無

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

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