我在进行数据存储和检索方面遇到了问题。
我想要做的是创造方框A和方框B
每个框都有不同的描述和其中的项目列表,它们由Box_handler访问。
基本上:
class Box_Handler(object):
def __init__(self,which_box):
self.which_box = which_box
def call_box(self):
if self.which_box == 'A':
self.contents = Box_A().load()
elif self.which_box == 'B':
self.contents = Box_B().load()
print(self.contents)
class Box_A(object):
def __init__(self):
self.contents = ['banana,apple,pear']
def box_store(self):
self.contents = self.contents+['guava']
def load(self):
return self.contents
class Box_B(object):
def __init__(self):
self.contents = ['orange,fig,grape']
def box_store(self):
self.contents = self.contents+['guava']
def load(self):
return self.contents
A = Box_A()
B = Box_B()
A.box_store()
B.box_store()
Box_Handler('A').call_box()
Box_Handler('B').call_box()
它没有打印番石榴,因为每次课程运行时都会触发 init ,所以我想放入一个只运行一次的初始化 ,但我遇到了需要变量激活初始化
的相同问题有没有人有工作? 我听说过泡菜,但如果我有一千个盒子,我需要一千个文件??!
很抱歉,如果它太简单了,但我似乎无法找到最简单的方法。
答案 0 :(得分:0)
在Box_Handler
的{{1}}中,您每次都在创建新对象,而不是通过调用call_box
添加guava
。要解决此问题,您可以像这样更改box_store
call_box
您必须创建def call_box(self ):
self.contents = self.which_box.load()
print(self.contents)
个对象,例如
Box_Handler
使用此修复输出变为,
Box_Handler(A).call_box()
Box_Handler(B).call_box()
如果你真的想要有水果列表,你应该像这样初始化['banana,apple,pear', 'guava']
['orange,fig,grape', 'guava']
contents
而不喜欢,你是如何在你的程序中完成的。因为,
self.contents = ['banana', 'apple', 'pear'] # list of strings
...
self.contents = ['orange', 'fig', 'grape'] # list of strings
通过这种改变,输出就像这样
self.contents = ['banana,apple,pear'] # list of a comma separated single string