1
という名前のメソッドfoo()
があります。johnという名前です。Python:オブジェクトargを取得し、NPEを1行でチェックしてください
#!/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
私は(のNPEを回避し、foo()
には、いくつかの呼び出しを避けること)foo()
によって返された学生の名前を取得したいです。
私の実際の解決策は次のとおりです。
student = foo()
print(student.name if student is not None else None)
が1行でこれを行うことは可能ですし、一時的な変数を作成せずに?
'dic [getattr(foo()、 'name'、None)]'(ここで私はキーエラーを受け取ります:なし) – roipoussiere
使用してください'dict.get( 'attr'、デフォルト)'だから 'dict.get(getattr(foo()、 'name'、None)、None)'。しかし、たぶんゴルフをしないでください。可読性がコードのコンパクトさを上回ることがあります。 –