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

时间:2015-01-06 20:32:50

标签: python

我有一个函数,我想输出与'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"])

1 个答案:

答案 0 :(得分:3)

您正在尝试打印Reaction个对象的列表。默认情况下,python打印一个类对象的ID,因为它真的没什么可说的。如果您可以控制班级定义,则可以通过向班级添加__str____repr__方法来进行更改。

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

如果你无法控制班级......那么,作者并没有实现对班级的美妙看法。您可以使用方法创建子类,或者编写一个函数来提取您想要的东西。