尝试打印值但获取内存位置

Trying to Print values but getting memory location instead

我在下面有一个函数,我想输出与 'O' 相关的值行,而不是打印这些值的位置,我该如何修改? allReactions 最初是一个空数组。我已经尝试了多种方法来解决这个问题,但不断出现错误。我也认为我的方法效率不高。

allReactions = []

reactionFile = "/Databases/reactionsDatabase.txt"

with open(reactionFile) as sourceFile:
    for line in sourceFile:

        if line[0] == "!" or len(line.strip()) == 0: continue

        allReactions.append(Reaction(line, sourceType="Unified Data"))


def find_allReactions(allReactions, reactant_set):
    reactant_set = set(reactant_set) 
    relevant_reactions = []
    previous_reactant_count = None

    while len(reactant_set) != previous_reactant_count:
        previous_reactant_count = len(reactant_set)

        for reaction in allReactions:
            if set(reaction.reactants).issubset(reactant_set):
                relevant_reactions.append(reaction)
                reactant_set = reactant_set.union(set(reaction.products))

    return relevant_reactions

print find_allReactions(allReactions, ["O"])

您正在尝试打印 Reaction 个对象的列表。默认情况下,python 打印一个 class 对象的 ID,因为它真的没有太多可说的。如果您可以控制 class 定义,则可以通过将 __str____repr__ 方法添加到 class.

来更改它
>>> class C(object):
...     pass
... 
>>> print C()
<__main__.C object at 0x7fbe3af3f9d0>

>>> class C(object):
...     def __str__(self):
...             return "A C Object"
... 
>>> print C()
A C Object
>>>                                                                                         

如果您无法控制 class...那么,作者没有实现 class 的漂亮视图。您可以使用这些方法创建子classes 或编写一个函数来提取您想要的内容。