获取内存位置而不是值
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):
我有一个节点 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):