gpt4 book ai didi

Python 3 : Why am I getting an AttributeError?

转载 作者:太空宇宙 更新时间:2023-11-03 17:33:54 24 4
gpt4 key购买 nike

我正在运行 Python 3,但收到以下错误:

AttributeError: 'AssemblyParser' object has no attribute 'hasMoreCommands'

这是引发错误的代码:

import sys
from Parser import AssemblyParser
from Code import Code

parser = AssemblyParser(sys.argv[1])
translator = Code()

out_file = str(sys.argv[1]).split(".")
out_file = str(out_file[:1]) + ".hack"

with open(out_file, 'w', encoding='utf-8') as f:
while parser.hasMoreCommands():
parser.advance()
if parser.commandType() == "A_COMMAND":
dec_num = parser.symbol()
binary = "{0:b}".format(dec_num)
elif parser.commandType() == "C_COMMAND":
default_bits = "111"
comp_bits += translator.comp(parser.comp())
dest_bits += translator.dest(parser.dest())
jump_bits += translator.jump(parser.jump())
binary = default_bits + comp_bits + dest_bits + jump_bits
assert len(binary) == 16
f.write(binary)

这是我的 Parser.py 文件:

class AssemblyParser:
"""
Encapsulates access to the input code. Reads an assembly language command,
parses it, and provides convenient access to the command's components (fields and symbols).
In addition, removes all whitespace and comments.
"""

def __init__(self, input_file):
self.current_command = ""
self.next_command = ""
with open(input_file,"r+", encoding='utf-8') as f:
for l in f:
line = "".join(l.split()) # Remove whitespace from the line
line = line.split('//') # Removes any comments from the line
clean_line = line[0]
if clean_line.strip(): # Removes any blank lines
f.write(clean_line)
next_command = f.readline()


def __hasMoreCommands__(self):
if self.next_command:
return true
return false


def __advance__(self):
with open(input_file, encoding='utf-8') as f:
self.current_command = self.next_command
self.next_command = f.readline()


def __commandType__(self):
char_1 = self.current_command[:1]
if char_1 == "@":
return "A_COMMAND"
elif char_1 == "(":
return "L_COMMAND"
else:
return "C_COMMAND"


def __symbol__(self):
assert self.commandType() == ("A_COMMAND" or "L_COMMAND")

if self.commandType() == "A_COMMAND":
symbol = str(symbol[1:])
else:
symbol = str(symbol[1:len(symbol)-1])
return str(symbol)


def __dest__(self):
assert self.commandType() == "C_COMMAND"

if "=" in self.current_command:
temp = self.current_command.split("=")
return str(temp[:1])
else:
return ""


def __comp__(self):
assert self.commandType() == "C_COMMAND"

temp = self.current_command

if "=" in temp:
temp = temp.split("=")
temp = str(temp[1:])
if ";" in temp:
temp = temp.split(";")
temp = str(temp[:1])
return temp


def __jump__(self):
assert self.commandType() == "C_COMMAND"

if ";" in self.current_command:
temp = self.current_command.split(";")
return str(temp[1:])
else:
return ""

我真的不知道为什么会收到此错误,我查看了导入文档,但我越来越困惑。我对 Python 还很陌生。谁能解释一下这个错误?

谢谢。

最佳答案

嗯。 Parser 模块中似乎没有名为 hasMoreCommand 的函数。其中的函数以下划线开头,并以下划线结尾。

关于Python 3 : Why am I getting an AttributeError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31497208/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com