[英]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函數? 謝謝您的幫助。
有幾件事。
self
作為第一個參數。 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.