TypeError: ‘str’ 对象在 Python 中不可调用

TypeError: ‘str’ 对象在 Python 中不可调用

TypeError: ‘str’ object is not callable in Python

Python“TypeError: ‘str’ object is not callable”发生在我们尝试将字符串作为函数调用时,例如通过覆盖内置str()函数。要解决该错误,请确保您没有覆盖str并解决函数名和变量名之间的任何冲突。

类型错误 str 对象不可调用

这是错误如何发生的一个示例。

主程序
# 👇️ overriding built-in str() str = 'hello world' # ⛔️ TypeError: 'str' object is not callable print(str(10))

我们覆盖内置str函数,将其设置为字符串原语,并尝试将其作为函数调用。

要解决这种情况下的错误,请确保重命名变量并重新启动脚本。

主程序
# ✅ Not overriding built-in str() anymore my_str = 'hello world' print(str(10))
如果您尝试访问特定索引处的字符串,请使用方括号而不是圆括号,例如my_list[0].

错误的另一个常见原因是简单地尝试将字符串作为函数调用。

主程序
my_str = 'hello world' # ⛔️ TypeError: 'str' object is not callable print(my_str())

要解决该错误,您要么必须删除括号,要么弄清楚如何为变量分配字符串而不是函数或类。

当我们有一个类方法和一个同名的类属性时,也会导致错误。

主程序
class Employee(): def __init__(self, name): # 👇️ this attribute hides the method self.name = name # 👇️ same name as class variable def name(self): return self.name emp = Employee('Alice') # ⛔️ TypeError: 'str' object is not callable print(emp.name())

该类Employee具有同名的方法和属性。

属性隐藏了方法,所以当我们尝试在类的实例上调用方法时,我们得到对象不可调用的错误。

要解决该错误,您必须重命名类方法。

主程序
class Employee(): def __init__(self, name): self.name = name def get_name(self): return self.name emp = Employee('Alice') print(emp.get_name()) # 👉️ "Alice"

重命名该方法后,您将能够毫无问题地调用它。

Make sure you don’t have a function and a variable with the same name.

main.py
def example(): return 'hello world' example = 'hi' # ⛔️ TypeError: 'str' object is not callable print(example())

The example variable shadows the function with the same name, so when we try
to call the function, we actually end up calling the variable.

Renaming the variable or the function solves the error.

Conclusion #

The Python “TypeError: ‘str’ object is not callable” occurs when we try to
call a string as a function, e.g. by overriding the built-in str() function.
To solve the error, make sure you’re not overriding str and resolve any
clashes between function and variable names.