我的计划如下:
print h # h value is printed as h1
if h=='h1':
servpro()
else:
hostpro()
我看到h
值为h1
。但if条件存在问题。即使h
打印为h1
,else
块也会被执行。我的程序有什么问题?
答案 0 :(得分:0)
要更好地理解为什么您所做的比较结果与实际相符,请查看Python's data model,并特别了解object.__eq__
和object.__cmp__
方法。当然,您可以覆盖这些方法。 See examples.
答案 1 :(得分:0)
Python的print语句显示对象的字符串表示形式。因此,如果它打印为'h1'(没有引号),你可以尝试测试它是否是对象的字符串表示:
if str(h) == 'h1':
servpro()
else:
hostpro()
答案 2 :(得分:0)
根据您的评论,您可以在field
的{{1}}对象中找到Host
并执行
'h1'
您也可以尝试
if h.field == 'h1':
servpro()
else:
hostpro()
repr调用h的魔术方法 repr ,它给出了一个包含h
表示的字符串