gpt4 book ai didi

python - 从可能不存在的变量设置 Python 列表

转载 作者:太空宇宙 更新时间:2023-11-04 10:27:46 24 4
gpt4 key购买 nike

在 Python 类中,我必须对几个私有(private)变量进行多次检查,例如。 G。 self.__a , self.__bself.__c包含在列表中。然后程序将像这样开始:

   for var in [self.__a, self.__b, self.__c]:
...

我现在的问题是,列表中包含的一些(可能是所有)变量现在可能还没有设置,我的程序由于发生 AttributeError 而停止。 .

我想出设置此列表以使其仅包含已经存在的变量的唯一方法是编写(在本例中为三个)try-except-clauses,其中每个子句都将一个变量添加到列表。但我认为必须有更好的方法来解决这个任务。

我怎样才能以更优雅的方式做到这一点?

最佳答案

您可以修改类中的 __getattr__ 方法以防止在这些情况下返回 AttributeError,la:

class Foo(object):
def __getattr__(self, name):
if hasattr(self, name):
return object.__getattr__(self, name)
else:
return None

显然,您可以将其扩展到 name 位于 ["__a", "__b", "__c"]startswith("__")

然后像以前一样在你的方法中使用,但过滤掉None:

for var in filter(None, [self.__a, self.__b, self.__c]):
...

注意:只有当您知道它在做什么并且您了解它所带来的风险时,您才真正应该这样做。在大多数情况下,您应该 try-except 并在 AttributeError 上寻求宽恕。

关于python - 从可能不存在的变量设置 Python 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28449644/

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