我如何将布尔数据属性放在子类中并演示它

问题描述 投票:0回答:1

现在,我正在为类分配作业,而我在子类部分遇到问题,问题是“下一步,编写一个名为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))
python pycharm
1个回答
0
投票

覆盖__bool__的目的是像这样直接将对象用作bool

© www.soinside.com 2019 - 2024. All rights reserved.