TypeError: ‘dict’ 对象在 Python 中不可调用
TypeError: ‘dict’ object is not callable in Python
Python “TypeError: ‘dict’ object is not callable” 发生在我们尝试像调用函数一样调用字典时。要解决该错误,请确保在访问字典中的键时使用方括号,例如
my_dict['my_key']
.
这是错误如何发生的一个示例。
主程序
my_dict = {'name': 'Alice', 'age': 30} # ⛔️ TypeError: 'dict' object is not callable print(my_dict('name')) # 👈️ uses parentheses instead of square brackets
代码示例中的问题是我们在访问字典中的键时使用圆括号而不是方括号。
主程序
my_dict = {'name': 'Alice', 'age': 30} # ✅ use square brackets print(my_dict['name']) # 👉️ "Alice" print(my_dict['age']) # 👉️ 30
另一件需要注意的事情是您没有覆盖内置
dict()
函数。
主程序
# 👇️ overrides built-in dict function dict = {'name': 'Alice', 'age': 30} # ⛔️ TypeError: 'dict' object is not callable print(dict(name='Alice', age=30))
要解决这种情况下的错误,请确保重命名变量并重新启动脚本。
主程序
# ✅ not overriding built-in dict anymore my_dict = {'name': 'Alice', 'age': 30} print(dict(name='Alice', age=30))
错误的另一个常见原因是简单地尝试将 adict
作为函数调用。
主程序
example = {'name': 'Alice', 'age': 30} # ⛔️ TypeError: 'dict' object is not callable example()
要解决该错误,您要么必须删除括号,要么弄清楚如何为变量分配字典而不是函数或类。
确保您没有同名的函数和变量。
主程序
def example(): return 'hello world' # 👇️ shadowing function example = {'name': 'Alice', 'age': 30} # ⛔️ TypeError: 'dict' object is not callable example()
example
变量隐藏同名函数,所以当我们尝试调用函数时,我们实际上最终调用了变量。
重命名变量或函数可以解决错误。
当我们有一个类方法和一个同名的类属性时,也会导致错误。
主程序
class Employee(): def __init__(self, address): # 👇️ this attribute hides the method self.address = address # 👇️ same name as class variable def address(self): return self.address emp = Employee({'country': 'Austria', 'city': 'Linz'}) # ⛔️ TypeError: 'dict' object is not callable print(emp.address())
该类Employee
具有同名的方法和属性。
属性隐藏了方法,所以当我们尝试在类的实例上调用方法时,我们得到对象不可调用的错误。
要解决该错误,您必须重命名类方法。
主程序
class Employee(): def __init__(self, address): # 👇️ this attribute hides the method self.address = address # 👇️ same name as class variable def get_address(self): return self.address emp = Employee({'country': 'Austria', 'city': 'Linz'}) # 👇️ {'country': 'Austria', 'city': 'Linz'} print(emp.get_address())
重命名该方法后,您将能够毫无问题地调用它。
结论
Python “TypeError: ‘dict’ object is not callable” 发生在我们尝试像调用函数一样调用字典时。要解决该错误,请确保在访问字典中的键时使用方括号,例如
my_dict['my_key']
.