0

我的程序如下:

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

我将h价值视为h1. 但是if条件有问题。即使h打印为h1,该else块也正在执行。我的程序有什么问题?

4

3 回答 3

0

为了更好地理解为什么你所做的比较结果是这样的,请查看Python 的数据模型,并专门阅读object.__eq__object.__cmp__方法。当然,您可以覆盖这些方法。请参阅示例。

于 2013-10-03T06:16:54.237 回答
0

Python 的 print 语句显示对象的字符串表示。因此,如果它打印为 'h1' (不带引号),您可以尝试测试这是否是对象的字符串表示形式:

if str(h) == 'h1':
    servpro()
else:
    hostpro()
于 2013-10-03T06:17:23.413 回答
0

根据您的评论,您可以在持有并执行fieldHost对象中找到'h1'

if h.field == 'h1':
    servpro()
else:
    hostpro()

你也可以试试

if repr(h) == 'h1':
    servpro()
else:
    hostpro()

repr 调用 h 的一个魔术方法repr,它给出了一个包含 h 表示的字符串

于 2013-10-03T06:40:57.213 回答