Skip to main content
 首页 » 编程设计

python之类型错误 : descriptor 'upper' requires a 'str' object but received a 'function' (beginner)

2025年05月04日21myhome

我试图将两个函数作为参数传递,但函数 str.upper 和 str.strip 出现错误。我不知道我做错了什么?

def normalize_text(func1, func2): 
    return func2(func1) 
 
 
def my_strip(s): 
    return str.strip(s) 
 
 
def my_upper(s): 
    return str.upper(s) 
 
 
def test(): 
    if(normalize_text(my_strip, my_upper)(' foo ') == 'FOO'): 
        print('Success') 
 
 
test() 

运行这样的代码 python main.py

... 然后我遇到错误:

TypeError: descriptor 'upper' requires a 'str' object but received a 'function' 

请您参考如下方法:

您的函数应按以下方式工作:

def normalize_text(func1, func2): 
    def func3(s): 
        return func2(func1(s)) 
    return func3 

func1 和func2 都接受一个字符串作为输入并返回一个字符串。因此,一个链接在一起时应该处理另一个的输出,而不是函数本身。