Quiz 15 Solution

Challenge Problem: Class Definition

Here is a basic working version.

class ChargeCard:

    def __init__(self, limit, balance=0):
        self._limit = limit
        self._balance = balance

    def getBalance(self):
        return self._balance

    def getLimit(self):
        return self._limit

    def charge(self, amount):
        if amount + self._balance <= self._limit:
            self._balance += amount
            return True
        else:
            return False

    def deposit(self, value):
        self._balance -= value

Here is a working version (including extra credit parameter checking).

class ChargeCard:

    def __init__(self, limit, balance=0):
        if not isinstance(limit, int):
            raise TypeError('limit must be integer')
        if limit < 0:
            raise ValueError('limit must be nonnegative')
        if not isinstance(balance, int):
            raise TypeError('balance must be integer')
                            
        self._limit = limit
        self._balance = balance

    def getBalance(self):
        return self._balance

    def getLimit(self):
        return self._limit

    def charge(self, amount):
        if not isinstance(amount, int):
            raise TypeError('amount must be integer')
        if amount <= 0:
            raise ValueError('amount must be positive')
        
        if amount + self._balance <= self._limit:
            self._balance += amount
            return True
        else:
            return False

    def deposit(self, value):
        if not isinstance(value, int):
            raise TypeError('value must be integer')
        if value < 0:
            raise ValueError('value must be nonnegative')

        self._balance -= value

Last modified: Tuesday, 27 November 2018