使用AttributeError获取类成员的值

时间:2017-07-11 11:58:57

标签: python attributeerror

参见我的例子

class MyClass1:
    name = 'A'
class MyClass2:
    foo = MyClass1()

obj1 = MyClass2()

如果AttributeErrorobj1foo,则代码下方会生成False

print obj1.foo.name

所以我写下面的

if obj1:
    if obj1.foo:
        if obj1.foo.name:
            print obj1.foo.name

最好的方法是什么?我可以避免代码中重复的单词吗?

3 个答案:

答案 0 :(得分:2)

您可以使用try/except语法来捕获异常。

try:
    print obj1.foo.name
except AttributeError:
    # do something

答案 1 :(得分:1)

您的代码可以简化为两行:

if obj1 and obj1.foo and obj1.foo.name:
    print obj1.foo.name

它逐个检查条件,如果and加入的所有条件都是假的,则整个... and ... and ...条件会变得虚假,并且不会进一步检查内部条件。

答案 2 :(得分:-2)

解决此问题的pythonic方法是使用try/execept

try:
   name = obj1.foo.name
except AttributeError:
    # raise error or pass