类临时数据存储区,Python

时间:2014-02-19 03:31:40

标签: python

我在进行数据存储和检索方面遇到了问题。

我想要做的是创造方框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 ,所以我想放入一个只运行一次的初始化 ,但我遇到了需要变量激活初始化

的相同问题

有没有人有工作? 我听说过泡菜,但如果我有一千个盒子,我需要一千个文件??!

很抱歉,如果它太简单了,但我似乎无法找到最简单的方法。

1 个答案:

答案 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