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?谢谢你的帮助。
答案 0 :(得分:3)
有一些事情。
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)
答案 1 :(得分:0)
简单修复,您只需打开和关闭类声明中的括号,因此class B
变为class B()
(同样的事情应用于A类)。此外,您需要添加某种变量(如self)作为在类中声明的每个方法的第一个参数。你永远不需要传递任何东西作为填充self的第一个参数,因为python会为你做。
至于你的A.add_f问题,你只需像对B一样做,并将A对象实例化为A1,然后调用A1的方法。