向employeeName和employeeSalary队列push值时遇'function' object has no attribute 'push'错误求助
解决'function' object has no attribute 'push'队列操作错误
嘿,这个问题我帮不少开发者排查过,咱们直接说最可能的两个原因,分分钟解决:
你把队列类当成了实例来用
很多新手容易犯这个错:比如用Python标准库的queue.Queue时,只写了employeeName = queue.Queue(这里Queue是类本身,属于函数对象),而没有加括号创建实例employeeName = queue.Queue()。类本身是没有push方法的,只有实例才有对应的队列操作方法。用错了队列的入队方法名
不同语言/库的队列方法名不一样:比如Java里常用push,但Python的queue模块里,入队的正确方法是put(),不是push()。如果你硬要调用push,自然会触发属性不存在的错误。
给你一个正确的示例代码参考:
import queue # 先创建队列实例 employeeName = queue.Queue() employeeSalary = queue.Queue() # 使用put()方法添加元素 employeeName.put("John Doe") employeeSalary.put(75000)
如果是用collections.deque(另一种常用的队列实现),它的入队方法是append()(队尾添加)或者appendleft()(队头添加),同样没有push方法:
from collections import deque employeeName = deque() employeeName.append("Jane Smith") # 相当于往队尾"push"元素
你可以对照检查一下自己的代码,大概率是这两个原因中的一个~
内容的提问来源于stack exchange,提问作者zach_93
相关产品推荐
相关产品推荐

