【发布时间】:2022-01-03 06:46:15
【问题描述】:
我有一个节点类,它有一个“符号”属性,它是一个字符串。我将此值传递给一个方法,该方法最终将其保存为字典中的键,但在此之前不会访问该值。
访问node.symbol后,我打印值
反式字符:'1'
然后我将它作为唯一参数传递给另一个函数。在该方法中,我立即使用以下方法打印符号:
print(symbol)
但它会打印:
我想访问应该是字符串“1”而不是这个内存位置的值。 我知道这可能以前被问过很多次,但我不知道该怎么称呼这个问题
class node:
def __init__(self,data):
self.left = None
self.right = None
self.symbol = None #will be a ch in alphabet, (), ~, *, or |
self.data = data
def get_symbol(self):
return self.symbol`
class RegEX
def Convert(self, nod, NFA_stack):
trans_char = node.get_symbol(nod)
print("type:", type(trans_char))
print("trans char:", trans_char, "\n")
if nod.left == None and nod.right == None:
print("passing trans_char into method")
NFA = self.Generate_NFA(trans_char)
NFA_stack.append(NFA)
def Generate_NFA(symbol, leftNFA = None, rightNFA = None): #NFA's are dictionaries, symbol is | or ~
print("in new method")
print("symbol: ", symbol)
在此方法中,trans_char 被识别为值为 '1' 的字符串,但在将 trans_char 传递给其他方法后,它变成了该类的某个内存地址。问题是我需要将其用作字典中的值,而不仅仅是打印它。
【问题讨论】:
-
如果你打印一个对象,你会得到调用它的 __str__() 或 __repr__() 函数的结果,如果它有一个,或者你看到的默认值。您可以覆盖其中之一,或者如果您想从“符号”打印特定值,只需打印它即可。比如打印(symbol.value)
-
我试过了,但由于某种原因,它一直变成那个地址。我正在尝试将值传递到字典中,但因为它是一个类对象,所以我无法用它做任何事情。
-
如果您不发布复制品,我只能提供一般性的指导。
-
对不起,我将它添加到原帖中,因为我不知道如何将代码添加到 cmets。顺便说一句,我非常感谢您的帮助
-
如果我复制粘贴并运行它,节点未定义。 “builtins.NameError:名称'节点'未定义”