python - 分配取自表达式的对象名称

标签 python

我需要从外部源提取数据。我构建了一个具有某种结构的基础类。我需要类型为 myBase 类的对象,但其名称会自动描述我迭代源的次数。我构建了一个类来存储这个数字,并使用一个返回我需要的对象的调用方法。我找不到一种方法将字符串作为对象的名称,但每次构建新对象时都会自动不同。 我简化了此示例的代码:

class myBase:
    def __init__(self):
        iteratedValue = None

class myIterator:
    def __init__(self):
        self.k = 0
    def __call__(self, s):
        self.k += 1
        self.name = 'myData' + str(self.k)
        # create an object named myData1, myData2 ...
        self.name = myBase() 
        self.name.iteratedValue = s 
        print '%s name is %s for k = %i' % (self.name, self.name.iteratedValue, self.k)

        # return object named myData1 type of myBase
        return self.name

def DataExtraction():
    # function to extract data form external source
    data = myIterator()
    data('Alice') 
    data('Ben') 

DataExtraction()

我的输出是:

<__main__.myBase instance at 0x7f261b6dc6c8> name is Alice for k = 1
<__main__.myBase instance at 0x7f261b6dc6c8> name is Ben for k = 2

我需要返回一个具有特定名称的对象,并且我期望输出:

myData1 name is Alice for k = 1
myData2 name is Ben for k = 2

原来的问题要复杂得多。我有外部数据,每次它们到来时我都想从这些数据中提取一些值。每次我这样做时,我都需要一个对象来使用它,但我需要这个对象具有不同的名称,因为最后我将它们存储在字典中以供其他方法使用。换句话说,当原始数据更改时,我处理数据并将结果存储在对象 myData1 中,我再次处理它并将结果存储在 myData2 等中。毕竟我需要所有 myData 对象并对它们进行统计以查看变化情况。我无法再访问原始数据。我需要 myData 的自动名称约定,如果它能够表达迭代器,那就最好了。

如何用字符串代替 self.name 作为对象的名称?

最佳答案

看起来你最好使用发电机。下面是一些读取数据的示例代码(实际上它是硬编码的,就像您的示例中一样),然后使用索引名称构造 Datum 对象。

class Datum(object):
    def __init__(self, index, value):
        self.name = 'myData%d' % (index + 1)
        self.value = value

def read_data():
    yield 'Alice'
    yield 'Ben'

def enumerate_data():
    for i, value in enumerate(read_data()):
        yield Datum(i, value)

for d in enumerate_data():
    print d.name, d.value

关于python - 分配取自表达式的对象名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13435401/

相关文章:

python - 如何获取 tkinter 文本小部件中最后一行的内容(Python 3)

python - 如何计算字典中的值并打印与最大金额关联的键和值

python - 是什么让 Python 的列表追加方法如此之快?

python - 在 Cython 中定义 C++ 结构返回类型

python - 在 Scrapy Start URL 中输入序列的第 N 个数字

python - 回归模型中成本函数的 L1 范数而不是 L2 范数

python - pytest fixtures 的范围可以被覆盖吗?

python - “标签”对象没有属性 'count'

python - 从字符串末尾删除标点符号

python - pygtk 从父节点按名称获取小部件