在python中平等的cheking

时间:2013-10-03 05:43:07

标签: python if-statement equality

我的计划如下:

print h   # h value is printed as h1
if h=='h1':
    servpro()
else:
    hostpro()

我看到h值为h1。但if条件存在问题。即使h打印为h1else块也会被执行。我的程序有什么问题?

3 个答案:

答案 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

表示的字符串