适当的班级用法? - Python

时间:2013-12-23 21:50:14

标签: python class oop object performance

所以,我一直在为命令行应用程序使用一个简单的范例。一个名为“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使用吗? 这是编码这类代码的最有效方法吗?

欢迎任何帮助;我不是编码专家,但我总是喜欢学习一些我最喜欢的编码语言的新东西! (如果你们认为问题的措辞不正确,我愿意编辑这篇文章,因为我并不完全相信所有人会有意义。)

0 个答案:

没有答案