检查是否定义了对象的属性

时间:2019-05-20 14:50:23

标签: python python-3.x class

在此代码示例中,我怎么说:“如果未定义颜色”?

class A:
    def __init__(self, name):
        self.name = name

    def atribute(self, color):
        self.color = color


object1 = A('car')
object2 = A('ship')

object1.atribute('blue')

if not object2.color:
    object2.atribute('red')

print(object2.color)

运行此代码时出现输出错误:“'A'对象没有属性'颜色'”

2 个答案:

答案 0 :(得分:3)

可以使用if hasattr(object1, 'color'),但从一开始就似乎是一个糟糕的设计(一方面,定义__init__之外的属性既混乱又违反PEP8)。

我建议您使用默认值为None的属性,然后可以使用简单的if检查(通过查看__init__可以清楚地知道{{ 1}}个实例具有):

A

答案 1 :(得分:2)

您可以使用hasattr函数:

if not hasattr(object2, 'color')
    object2.method('red')

print(object2.color)

但是这闻起来像是一种非常糟糕的设计模式,您可能应该重新考虑一下实现。