将布尔值更改为 'Yes' 或 'No'

Change Boolean Values to 'Yes' or 'No'

我在将布尔值转换为字符串 'Yes' 或 'No' 时遇到问题。

class Worker():
  def __init__(self,name,duty):
    self._name = name
    self._duty = duty

  @property
  def name(self):
    return self._name
  @property
  def duty(self):
    return self._duty

  @duty.setter
  def duty(self, duty):
    if duty == True:
        return f'Yes' if self._duty else 'No'

  def __str__(self):
    return f'Name: {self._name} Duty: {self._duty}'

if __name__ == '__main__':
    w1 = Worker('John', True)
    print(w1)

我希望输出的内容是姓名:John 职责:是 但是,现在我收到姓名:John Duty:True

任务 setter 未被调用。我修改了代码以在我的机器上运行。

class Worker():
  def __init__(self,name,duty):
    self._name = name
    self._duty = duty
    self.duty = duty
    
  @property
  def name(self):
    return self._name

  @property
  def duty(self):
    print("This was never called")
    return self._duty

  @duty.setter
  def duty(self, duty_):
    if duty_:
        self._duty = 'Yes'
    else:
        self._duty = 'No'

    return self._duty

  def __str__(self):
    print(self.duty)
    return f'Name: {self._name} Duty: {self._duty}'

if __name__ == '__main__':
    w1 = Worker('John', True)
    print(w1)

我得到的答案是:

This was never called
Yes
Name: John Duty: Yes