python-3.x - 如何从类中打印字符串?
问题描述
我创建了一个类,它返回一个可以附加或删除输入值的字符串。
如果堆栈类为空,我必须通过以下断言通过我的测试:
assert print(Stack()) == ''
我曾尝试使用str和repr,但没有成功。
我的班级定义如下:
class Stack:
def __init__(self):
self.data = ''
self.final_value = ''
def __repr__(self):
for i in range(self.size()):
if i == 0:
self.final_value += str(self.data[i])
else:
self.final_value += ' -> ' + str(self.data[i])
return str(self.final_value)
def __len__(self):
return len(self.data)
def is_empty(self):
if len(self.data) == 0:
return True
else:
return False
def push(self, value_to_add):
if type(value_to_add) is int or type(value_to_add) is str:
self.data = str(value_to_add) + self.data
elif callable(value_to_add):
self.data = 'F' + self.data
elif type(value_to_add) is dict:
self.data = 'D' + self.data
elif type(value_to_add) is list:
self.data = 'L' + self.data
elif value_to_add is None:
self.data = 'N' + self.data
return self.data
def add(self, value_to_add):
if type(value_to_add) is int or type(value_to_add) is str:
self.data = str(value_to_add) + self.data
elif callable(value_to_add):
self.data = 'F' + self.data
elif type(value_to_add) is dict:
self.data = 'D' + self.data
elif type(value_to_add) is list:
self.data = 'L' + self.data
elif value_to_add is None:
self.data = 'N' + self.data
return self.data
def pop(self):
if self.is_empty():
raise StackPopException
else:
value_to_pop = self.data[0]
self.data = self.data[1:]
return int(value_to_pop)
def size(self):
return len(self.data)
StackPopException = ValueError
当我运行以下测试时,我的代码由于返回值的类型而失败:
stack = Stack()
stack.push(3)
stack.push(1)
stack.push(2)
assert print(stack) == '2 -> 1 -> 3'
编辑
我怎样才能在不改变测试线的情况下完成这项工作?
解决方案
assert str(stack) == '2 -> 1 -> 3'
强制类返回其自身的字符串表示。
问题编辑后:
打印功能返回None
,因此返回值不能用于测试。
推荐阅读
- c++ - 如何将多个 LLVM IR 链接到一个 .so 文件中?
- parameters - 一些电子邮件客户端正在对所有链接的查询字符串参数进行模糊测试
- python - 如何根据一列的唯一值将列表拆分为子列表?
- android - RxJava 主线程总是崩溃
- apache - 当我在 HTTPS (.htaccess) 上访问一个没有结束斜杠的文件夹时出现奇怪的行为
- random - 如何包含用于随机数生成器的 mkl_vsl 模块,例如“vsrnggaussian”?(Fortran)
- git - git add -A 与 git stage -A 的区别
- amazon-web-services - AWS CloudWatch:警报状态 24 小时后重复警报通知
- c - 跳跃搜索算法的复杂性
- python - 一天熊猫数据框中n个最低价格的小时间隔的平均值