python:获取对象arg并在一行中检查NPE

时间:2016-07-11 14:49:04

标签: python nullpointerexception

我有一个方法foo(),最终会返回名为 john Student

#!/usr/bin/python3
from random import randint
class Student(object):
    name = ""

def foo():
    if randint(0,1) == 0:
        student = Student()
        student.name = 'john'
    else:
        student = None
    return student

我希望获得foo()返回的学生的姓名(避免使用NPE并避免多次拨打foo())。

我的实际解决方案是:

student = foo()
print(student.name if student is not None else None)

是否可以在一行中执行此操作,而无需创建临时变量?

1 个答案:

答案 0 :(得分:1)

您可以使用getattr(obj, 'attr_to_get', default_value)

在您的示例中,解决方案为getattr(foo(), 'name', None)