【问题标题】:Object Oriented Programming - Unclear why the IF statement in a method is not working面向对象编程 - 不清楚为什么方法中的 IF 语句不起作用
【发布时间】:2021-10-13 09:56:46
【问题描述】:
class PlugLead:

    def __init__(self, mapping):
        self.map1 = mapping[0]
        print(self.map1)
        self.map2 = mapping[1]
        print(self.map2)

    def encode(self, character):
        print(character)
        print(type(character))
        print(self.map1 == character)
        if self.map1 == character is True:
            return self.map2
        elif self.map2 == character is True:
            return self.map1
        else:
            return character


lead = PlugLead("zc")

lead.encode("z")

当我运行上面的代码时,我得到以下信息。 IF 语句有问题,但我不知道是什么!谢谢

z

c

z

是的

进程以退出代码 0 结束

【问题讨论】:

  • if 语句中的表达式中删除is True
  • 你可以删除是真的

标签: python class if-statement methods


【解决方案1】:

首先计算is 运算符,然后计算==

所以这个比较:

self.map1 == character is True

实际上等同于:

self.map1 == (character is True)

它总是返回False

您可以跳过与True的比较:

    if self.map1 == character:
        return self.map2
    elif self.map2 == character:
        return self.map1
    else:
        return character

顺便说一句,您正在调用 lead.encode("z"),但您没有告诉 python 打印它,所以它不会说明 encode() 返回的内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-17
    • 1970-01-01
    • 1970-01-01
    • 2012-07-21
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    相关资源
    最近更新 更多