【问题标题】:Using a boolean expression in a __str__ method in python在 python 的 __str__ 方法中使用布尔表达式
【发布时间】:2019-04-24 17:16:10
【问题描述】:

我在 python 的 str 方法中的程序存在问题。

所以在我的 tostring 方法中,我打印出用户的信息。我遇到的问题是当我打印数据时,如果用户想要在邮件列表中。

我想把那部分作为布尔答案,所以“是”或“否”。

我正在尝试弄清楚如何使用临时变量,以便我的第一个客户显示“是”,而第二个客户显示“否”

class person(Person):
    def __init__(self):
        super().init(name,address,phone)

    def __str__(self):
        return super().__str__()

class Customer(Person):
    def __init__(self,name,address,phone,Num,Mail):
        super().__init__(name,address,phone)
        self._cusNum = Num
        self._mailList = Mail

    @property
    def Num(self):
        return self._cusNum

    @property
    def Mail(Self):
        return self._mailList

    @Num.setter
    def Num(self,Number):
        self._cusNum = Number

    @Mail.setter
    def Mail(self,List):
        self._mailList = List

以下是问题:

    def __str__(self):
        return super().__str__() + " Customer Num: " + str(self._cusNum) + " Mailing List? "
        if self._mailList == temp:
            _mailList = "Yes"
        else:
            _mailList = "No"
        return _mailList   

这就是问题所在,我想使用“_mailList”变量将其变为布尔表达式。

from Person import*
def main():
    person1 = Customer("John Smith", "5 myStreet","973-111-1111",1,True)
    person2 = Customer("Henry Haus", "1 myHouse","973-222-2222",2,False)
    print(person1)
    print(person2)

main()

上面这个是调用对象的类,最后一个变量是真假

这就是我在下面被告知要做的事情 " 布尔数据属性,表示 客户是否希望在邮件列表中。 "

【问题讨论】:

  • 你有一个return 作为__str__ 中的第一条语句,因此它将在该点退出而不执行if
  • 你的意思是temp = super().__str__() + ...
  • 什么是self._mailList?只定义了person1person2,为什么还要写print(person)
  • @chepner 它已更新,我正在对其进行调整
  • @Prune 我添加了类,如果我要添加所有的,那将没有用,当错误仅在 toString 方法中时

标签: python boolean tostring


【解决方案1】:

您只需将布尔值self._mailList 转换为字符串,然后将其添加到其余部分。

def __str__(self):
    return "{} Customer Num: {} Mailing List? {}".format(
        super().__str__(),
        self._cusNum,
        "Yes" if self._mailList else "No"
    )

【讨论】:

    猜你喜欢
    • 2014-04-21
    • 2015-06-18
    • 2016-04-06
    • 1970-01-01
    • 2021-12-09
    • 2010-10-02
    • 2010-11-29
    • 2012-07-13
    • 1970-01-01
    相关资源
    最近更新 更多