将布尔值更改为'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)

我想要的输出是Name: John Duty: Yes但是,现在我得到名字:John职责:True

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

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

最新更新