获取内存位置而不是值

Getting memory location instead of value

我有一个节点 class,它有一个“symbol”属性,它是一个字符串。我将这个值传递给一个方法,该方法最终将它保存为字典中的键,但直到那时才访问该值。

访问 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传递给另一个方法后,它变成了[=32的某个内存地址=].问题是我需要将其用作字典中的值,而不仅仅是打印它。

方法中的第一个参数是为 class 对象本身保留的,因此 Generate_NFA(symbol,...) 让 Python 认为 symbol 是 RegEx [=18] 的对象=] 调用该方法。

将您的函数定义编辑为以下应该可以解决问题:

def Generate_NFA(self, symbol, leftNFA = None, rightNFA = None):