首页 > 解决方案 > 调用类实例(类中的函数)上的方法,该方法调用该类中的其他函数

问题描述

我在 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 的情况下相同的结果。

标签: pythonpython-3.xclass

解决方案


要么像这样:

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方法。


推荐阅读