1
Ich habe eine Methode foo()
, die schließlich eine Student
namens John zurückgibt.Python: Objekt Arg abrufen und überprüfen NPE in einer Zeile
#!/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
Ich möchte den Namen des Schülers durch foo()
(Vermeidung von NPE und die Vermeidung mehrere Anrufe zu foo()
) zurückgegeben bekommen.
Meine aktuelle Lösung ist:
student = foo()
print(student.name if student is not None else None)
Ist es möglich, dies in einer Zeile zu tun, und ohne eine temporäre Variable zu schaffen?
Danke, was nun, wenn ich zum Beispiel die Arg durch ein Wörterbuch, wie übergeben möchte: 'dic [getattr (foo(), 'Name', None)] (Hier bekomme ich einen Schlüsselfehler: Keine) – roipoussiere
Verwenden 'dict.get ('attr', Standard)'. Also 'dict.get (getattr (foo(), 'name', None), None)'. Aber Sie sollten wahrscheinlich nicht so hart Golf spielen - manchmal übertrifft die Lesbarkeit die Kompaktheit des Codes. –