python - 如何在python中调用另一个类的函数

标签 python class

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 ?感谢您的帮助。

最佳答案

有几件事。

  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)

关于python - 如何在python中调用另一个类的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29000268/

相关文章:

c++ - 对象列表中的变量不会改变

java - 为什么 Android map 指南针演示使用 SmoothCanvas 类的委托(delegate)?

python - 获取另一个应用程序的所有快捷方式的列表

python - 如何在没有索引的情况下从分组数据框中获取单元格值

Python os.stat 和 unicode 文件名

C++通过引用其他类传递二维数组

java - Java 中的静态类有什么用?

c++ - 函数退出后 vector 数据消失

python - 如何判断 screen 是否正在运行?

python - 运行代码时为 "pygame.error: display Surface quit"