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) 的 self 时,它给了我这个错误:
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
作为第一个参数。 - 您出错的部分是您尝试将 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)
关于python - 如何在python中调用另一个类的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29000268/