【发布时间】:2018-02-15 13:39:17
【问题描述】:
如果一个对象存在于一行代码中,有没有一种 Pythonic 的方法来获取一个属性?目前在下面的代码中,如果有人传入 None 类型的对象,代码将中断,所以我需要一些干净的方法来检查它不是 None,而是在一行代码上。 C# 的 ?. 语法非常好用,所以寻找类似的东西。
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。 -
如果有人将 None 传递给您的
print_class_property,那是他们的错误,而不是您的错误。也就是说,Python 没有空合并运算符或类似的东西。 -
因为这些对象是对象列表中的属性,我必须进行大约 20 次检查。我每次都可以做一个空检查,但感觉 Python 应该有一些东西。
-
@CamJohnson26 看我的回答。
-
为什么不
b = a.attr if a is not None else 'some default value'?
标签: python python-3.x