Python的setdefault允许您从字典中获取值,但如果该键不存在,则您可以分配基于参数的值__CODE__.然后,您可以获取字典中键的任何内容.
没有操纵对象__CODE__是否有类似的对象功能?
例如,
我有一个__CODE__可能有也可能没有属性的对象__CODE__.我该怎么做:
result = setdefaultattr(foo,'bar','bah')
Run Code Online (Sandbox Code Playgroud)
Joh*_*hin 24
请注意,如果该属性不存在,则当前接受的答案将调用hasattr(),setattr()和getattr().只有当OP做了类似覆盖setattr和/或getattr的事情时才有必要 - 在这种情况下OP不是我们带他去的无辜的询问者.否则调用所有3个函数是粗略的; 应该跟随setattr()调用,return value以便它不会落到return getattr(....)
根据文档,hasattr()是通过调用getattr()和捕获异常来实现的.当属性已存在时,以下代码可能更快:
def setdefaultattr(obj, name, value):
try:
return getattr(obj, name)
except AttributeError:
setattr(obj, name, value)
return value
Run Code Online (Sandbox Code Playgroud)
Python没有内置的,但您可以定义自己的:
def setdefaultattr(obj, name, value):
if not hasattr(obj, name):
setattr(obj, name, value)
return getattr(obj, name)
Run Code Online (Sandbox Code Playgroud)