我想做的是:
if myObject: # (not None)
attr = myObject.someAttr
else:
attr = ''
并尽可能避免使用三元表达式。有没有类似的东西:
attr = myObject.someAttr || '' ?
我正在考虑创建自己的函数,例如:
get_attr_or_default(instance,attr,default):
if instance:
return instance.get_attribute(attr)
else:
return default
但是听到 python 没有这方面的快捷方式,我会感到很惊讶。
综合:
我尝试了两种解决方案,结果如下:
class myClass(Models.model):
myObject = model.foreignKey('AnotherClass')
class AnotherClass(Models.model):
attribute = models.charField(max_length=100,default = '')
attr = myClass.myObject.attribute if myClass.myObject else '' # WORKED
attr = myClass.myObject and myClass.myObject.attribute # WORKED with NONE as result
attr = myClass.myObject.attribute or '' # Raises an error (myObject doesn't have attribute attribute)
try: attr = myClass.myObject.attribute
except AttributeError: attr = '' # Worked
感谢您的回答!
最佳答案
attr = myObject.someAttr if myObject else ""
关于python - if exists else 的简短写法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22983066/