嘿伙计们,我在我的数据结构课程中遇到第一次任务时遇到了麻烦,并且正在跳跃某人可以提供一些关于我做错事情的见解。
我必须创建一个利用2个队列进行数据存储的堆栈。
import Queue_PlistLR as queueList
import Queue_PlistLR as queueList
class Stack_2Queues():
def __init__(self, name, salary):
self.items = []
self.name = name
self.salary = salary
def isEmpty(self):
return len(self.items) == 0
def push(self, e):
self._data.append(e)
def pop(self):
if self.is_empty:
raiseEmpty("Stack is empty")
return self._data.pop()
def size(self):
return len(self.items)
def to_String(self):
str_i = ""
for e in self.items:
str_i+=str(e)+" "
return str_i.strip()
def length(self):
return len()
def enqueue(self, item):
self.items.append(item)
def dequeue(self):
if self.isEmpty():
raise Empty('Queue is empty')
return self.items.pop(0)
def employeeName(self):
print("The employee is: ", self.name)
def employeeSalary(self):
print("Employees salary is", self.salary)
s1 = Stack_2Queues = [["Ash", "Jen", "Mike", "Zach"], [45000, 32000, 74000, 960000]]
s1.employeeName()
s1.employeeSalary()
***我知道这大概是错的。但我的问题是这个。对于堆栈,我想创建2个队列,一个用于employeeName,另一个用于employeeSalary,使用1个堆栈。
当我尝试从堆栈中打印名称和工资时(看它是否有效)我得到“list has no attribute”错误。***
所以,这是我的问题:
1)请原谅我的文盲,因为这可能听起来很愚蠢,但是我的s1变量是堆栈的形式吗?
2)为什么我得到列表没有属性,因为我定义了所有方法,并调用它们?
答案 0 :(得分:2)
AttributeError
由此行引起:
s1 = Stack_2Queues = [["Ash", "Jen", "Mike", "Zach"], [45000, 32000, 74000, 960000]]
这不是您初始化Stack_2Queues
的方式。这里实际上是你将包含两个其他列表的列表分配给变量s1
和Stack_2Queues
(从而将指向类定义的引用更改为列表)
In [1]: s1 = Stack_2Queues = [["Ash", "Jen", "Mike", "Zach"], [45000, 32000, 74000, 960000]]
In [2]: print(s1)
[['Ash', 'Jen', 'Mike', 'Zach'], [45000, 32000, 74000, 960000]]
In [3]: print(Stack_2Queues)
[['Ash', 'Jen', 'Mike', 'Zach'], [45000, 32000, 74000, 960000]]
理解这一点的简单例子:
In [4]: a = 5
In [5]: b = 5
这相当于:
In [6]: a = b = 5
将行更改为:
s1 = Stack_2Queues(["Ash", "Jen", "Mike", "Zach"], [45000, 32000, 74000, 960000])
之后它适用于我:
('The employee is: ', ['Ash', 'Jen', 'Mike', 'Zach'])
('Employees salary is', [45000, 32000, 74000, 960000])
您还在未使用的脚本顶部两次导入了相同的模块。
如果您尝试在push
python的实例上调用pop
或Stack_2Queues
,则会抛出另一个AttributeError
因为Stack_2Queues
没有任何_data
def push(self, e):
self._data.append(e)
def pop(self):
if self.is_empty:
raiseEmpty("Stack is empty")
return self._data.pop()
1}}属性。
self._data
您应该更改代码的这一部分,或在__init__
方法中添加def length(self):
return len()
。
这也行不通:
len
在没有任何参数的情况下调用内置size
函数将引发错误。 https://docs.python.org/3.6/library/functions.html#len
它可能是多余的,因为你定义了nestedScrollView
方法并且可能做同样的事情。