在此代码示例中,我怎么说:“如果未定义颜色”?
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'对象没有属性'颜色'”
答案 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)
但是这闻起来像是一种非常糟糕的设计模式,您可能应该重新考虑一下实现。