现在,我正在为类分配作业,而我在子类部分遇到问题,问题是“下一步,编写一个名为Customer的类,它是Person类的子类。Customer类应该具有数据属性”和“布尔数据属性”(指示客户是否希望加入邮件列表)。在一个简单程序中演示“客户”类的实例。”我有正确的客户编号,但是当它要求提供布尔数据属性时,我使用了布尔运算符,但是无论我输入什么内容,我返回的都是True。我还能如何放置布尔属性
'''
customer_class.py: create a class that can a person name, address, age and phone number
and make a program that can make three instances of the class one to hold
personal information and two more to hold a friends information
next make a subclass that display the customer number and if they wish to be on the
mailing list
By: Javon Jamison
3/17/2020
'''
class Person(object):
def __init__(self, name, address, age, phone_number):
self.name = name
self.address = address
self.age = age
self.phone = phone_number
def get_name(self):
return self.name
def get_address(self):
return self.address
def get_age(self):
return self.age
def get_phone(self):
return self.phone
def __str__(self):
return "Name: " + self.name + "\n" + "Address: " + self.address \
+ "\n" + "age: " + self.age + "\n" + "Number: " + self.phone
#person1 = Person('Javon', '123 road', "18", "123-456-7890")
#person2 = Person('Wll', '124 road', "19", "122-455-7893")
#person3 = Person('Bhari', '125 road', "20", "111-222-4444")
#print(person1, "\n", person2, "\n", person3)
class Customer(Person):
""" subclass of Person"""
def __init__(self, name, address, age, phone_number, decision):
super().__init__(name, address, age, phone_number)
self.number = phone_number
self.decision = decision
def get_number(self, phone_number):
""" get customer number"""
return self.number == phone_number
def set_decision(self, decision):
""" get the customer decision"""
return self.decision == decision
def __bool__(self):
""" determine if they want to be on the list"""
if self.decision == "y":
return True
elif self.decision == "n":
return False
def __str__(self):
""" display the number and if they want to be on mailing list"""
return self.number
cust1 = Customer('Javon', '123 road', "18", "123-456-7890", "n")
print(cust1)
print(bool(cust1.decision))
覆盖__bool__
的目的是像这样直接将对象用作bool
值