python - 调用类实例(类中的函数)上的方法,该方法调用该类中的其他函数
问题描述
我在 Python 中的一个类中工作,它有 3 个函数。函数 1 和函数 2 各自行动,但函数 3 应该打印从假设 func_1 返回的内容。
我将 func_1 的函数名称传递给 func_3 但我无法得到正确的结果。当我创建名为“test”的类的实例时,我无法调用 test.func_3 并且我尝试了所有我知道或能够在互联网上找到的东西。
试图在不将 func_1 传递给 func_3 的情况下调用它:“NameError: name 'func_1' is not defined”
将 func_1 传递给 func_3 并在没有参数的情况下调用它:“TypeError: func_3() missing 1 required positional argument: 'func_1'”
将 func_1 传递给 func_3 并使用参数调用它:“NameError: name 'func_1' is not defined”
这是工作代码(没有类,只有一些功能:
def func_1():
print("Print func_1 - Print_string")
return "ReturnFunc1 - Return_string | "
def func_2():
print("Print func_2 - Print_string")
return "ReturnFunc2 - Return_string | "
def func_3():
print("Anything below this line is printed because of calling func_3")
print("============================================================")
print("Print func_3 - Print_string")
print(func_1(), func_2())
func_1()
func_2()
func_3()
==================================================== =================
这是一个类,无论如何都不起作用:
class TestingClass():
def func_1(self):
print("Print func_1")
return "ReturnFunc1"
def func_2(self):
print("Print func_2")
return "ReturnFunc2"
def func_3(self,func_1):
print("Anything below this line is printed because of calling func_3")
print("============================================================")
print("Print func_3")
print(func_1)
test = TestingClass()
test.func_3(func_1)
我想获得与没有 Class 的情况下相同的结果。
解决方案
要么像这样:
class TestingClass():
def func_1(self):
print("Print func_1")
return "ReturnFunc1"
def func_2(self):
print("Print func_2")
return "ReturnFunc2"
def func_3(self,func_1):
print("Anything below this line is printed because of calling func_3")
print("============================================================")
print("Print func_3")
print(func_1())
test = TestingClass()
test.func_3(test.func_1)
或者像这样:
class TestingClass():
def func_1(self):
print("Print func_1")
return "ReturnFunc1"
def func_2(self):
print("Print func_2")
return "ReturnFunc2"
def func_3(self):
print("Anything below this line is printed because of calling func_3")
print("============================================================")
print("Print func_3")
print(self.func_1())
test = TestingClass()
test.func_3()
在第一个片段中,注意从print(func_1)
到的变化print(func_1())
。更重要的是,还要注意从test.func_3(func_1)
到的变化test.func_3(test.func_1)
。
第二个片段的不同之处在于您不再将函数传递给func_3
,而是直接调用类实例的func_1
方法。
推荐阅读
- javascript - 为什么我第二次 console.log(course) 时视图没有更新
- string - 使用 Sed 将文本文件中的子字符串替换为字符串数组
- c# - POST 模型(DTO)与列表到控制器
- json - 如何从字典中的列表中访问字典中的值?
- swift - 如何在 Swift 中完全定义关联类型之间的关系?
- ios - 如何通过点击通知打开标签栏
- javascript - 流停止后网络摄像头灯保持亮起
- reactjs - Redux 状态未在开发中的应用程序中更新
- javascript - 从 AJAX/PHP 中的选择输入中获取值检索用于表单提交的 innerhtml
- sql - 没有参数 $3 SQL