所以,我一直在为命令行应用程序使用一个简单的范例。一个名为“Command”的基类被多次继承,因此我可以使用子类在while循环中执行我的脏工作。这个while循环询问命令并通过字典运行该输入以指向正确的类并调用Command()。run()(由于几个不重要的原因需要初始化类)。它看起来像这样:
class Command(object):
#Some of these parent variables where used as constants and
#redefined in the global scope
dir = ""
password = ""
target = ""
status_msg = "only for child classes"
def __init__(self):
self.names = [self.__class__.__name__.lower()]
def run(self):
raise NotImplementedError("There has to be code for the program to run!")
class End(Command):
status_msg = "Closing program and resources ..."
def __init__(self):
Command.__init__(self)
names = [
"exit", "close", "quit"
]
self.names.extend(names)
def run(self):
#Do checks and close resources?
sys.exit()
while True:
command = input("What will you be doing with said folder? ")
try:
cmd = commands[strip(command.lower())]() # Strip is defined elsewhere in the code
print("\n", cmd.status_msg, "\n")
cmd.run()
except Exception as __e:
print("Error: \n " + str(__e))
print("Perhaps you misspelled something? Please try again \n")
和其他类将覆盖运行命令和类变量。
我一直想知道这是否是Pythonic对类的使用,以及是否有效。最后这相当于两个问题。
这是类的pythonic使用吗? 这是编码这类代码的最有效方法吗?
欢迎任何帮助;我不是编码专家,但我总是喜欢学习一些我最喜欢的编码语言的新东西! (如果你们认为问题的措辞不正确,我愿意编辑这篇文章,因为我并不完全相信所有人会有意义。)