gpt4 book ai didi

python - 检查类实例变量是否在 Python 中设置的最佳方法是什么?

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

我有一个变量,它可能会或可能不会在实例中获取值:

class EC():
__init__(self, a=False):
...
if a: self.__var = ...

稍后我想检查实例中是否存在 __var。因为在名称前面加上 __ 会将内部名称更改为 _EC__var,所以检查代码变得有点困惑:

if ''.join(['_',self.__class__.__name__,'__name']) in self.__dict__: ...

上面的代码是否正常?如果不是,首选的替代方案是什么?

我能想到的一个选择是无论如何都要给 __var 一些值,例如:

_no_value = object()
...
def __init__(self, a):
self.__var = _no_value
...
if a: self.__var = ...

所以稍后我可以将 __var_no_value 进行比较,而不是将内部变量搞得一团糟。

最佳答案

你忘记了 EAFP principle :

try:
value = self.__var
except AttributeError:
# do something else

如果你确定要使用哨兵,你可以将它与类变量结合起来:

class EC():
__var = object():
...
if self.__var is not EC.__var:
...

关于python - 检查类实例变量是否在 Python 中设置的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17996570/

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