【问题标题】:Trying to Print values but getting memory location instead尝试打印值但获取内存位置
【发布时间】:2015-01-06 20:32:50
【问题描述】:

我有一个函数,我想在它下面输出与“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 类需要一个__str__ 方法来定义它应该如何打印。

标签: python


【解决方案1】:

您正在尝试打印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
>>>                                                                                         

如果您无法控制该类...好吧,作者没有实现该类的漂亮视图。您可以使用方法创建子类或编写函数来提取您想要的东西。

【讨论】:

  • ...或编写方法并猴子补丁现有的类;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多