Python Get Property if Object is not None
如果一个对象存在于一行代码中,是否有一种方法可以抓取属性?目前在下面的代码中,如果有人传入一个none类型的对象,代码将中断,因此我需要一些干净的方法来检查它不是none,而是在一行代码上。C的
1 2 3 4 5 6 | class MyClass: def __init__(): self.my_property ="Hello, World!" def print_class_property(myClassInstance): print(myClassInstance???.my_property) # Here is where I need something inline |
您可以使用内置函数
getattr(object, name[, default])
Return the value of the named attribute of object. name must be a string. If the string is the name of one of the object’s attributes, the result is the value of that attribute. For example,
getattr(x, 'foobar') is equivalent tox.foobar . If the named attribute does not exist, default is returned if provided, otherwise AttributeError is raised.
大胆强调我的。
1 2 | >>> getattr(None, 'attr', 'default') 'default' |
下面是一个与您的问题相关的更多示例:
1 2 3 4 5 6 7 8 9 10 11 12 | >>> class Class: def __init__(self): self.attr = 'attr' >>> def func(obj): return getattr(obj, 'attr', 'default') >>> func(Class()) 'attr' >>> func(None) 'default' |
正如@juanpa.arrivilaga在评论中所说,处理此类案件时的另一个常见习惯用法是使用