gpt4 book ai didi

python - 在类实例化期间干净地处理问题

转载 作者:行者123 更新时间:2023-12-03 08:14:46 25 4
gpt4 key购买 nike

我正在编写一个 Python 类,它将被多个调用应用程序导入和使用。每个调用应用程序都将编写为在启动时将类实例化一次(并且仅一次),然后维护该实例直到应用程序关闭。

成功的实例化涉及相当长的依赖项和检查列表,例如给定文件夹中给定 MS Access 文件的存在、更新该数据库的能力、在另一个文件夹中关闭日志文件的读/写权限、与调用应用程序相关的某些其他文件夹的存在……你明白了。我想做的是在类实例化时检查所有这些依赖项。如果其中任何一个失败,类中的代码将为用户提供一个错误弹出窗口,然后避免实例化该类。然后调用应用程序将检测到该类没有被实例化并简单地退出。

我已经通过各种其他线程 Root ,我发现的选项要么是创建一个工厂(这对于需要的东西来说似乎有点夸张),要么覆盖 __new__方法(根据其他讨论可能很棘手......我发现的几乎每个代码示例都有一长串评论警告所有它不起作用的情况)。

那么从首选实践的角度来看,这两种方法中的任何一种都是可行的吗?还是有其他一些最适合我想要完成的选择?

最佳答案

标准做法是引发异常,使用实例化您的类的代码捕获并处理该异常:

class MyClass(object):
def __init__(self, foo, bar, baz):
if not self._database_exists(foo):
raise ValueError('No valid database {}'.format(foo))

# etc.

然后:
try:
theinstance = MyClass('foooption', barvalue, bazvalue)
except ValueError as e:
# Oops, something went wrong
showErrorToUser(e)
theinstance = None

关于python - 在类实例化期间干净地处理问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15390055/

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