Sorting instances of an Object by Numeric values Python

Viewed 743

I'm scraping a website for certain values like name, price, stock and rating and have been using the functions

    my_products.sort(key = lambda x: x.return_name())
    my_products.sort(key = lambda x: x.return_price())
    my_products.sort(key = lambda x: x.return_rating())
    my_products.sort(key = lambda x: x.return_stock())

to sort them. It all works fine and dandy, except it doesn't sort the price numerically, it lists them like 1000, 1500, 20, 200, 2000, 2500. Which isn't exactly what I'm looking for. How can I change this sorting behavior?

The class for each product:

class Product():
__title = ""
__price = ""
__rating =""
__stock = ""

def __init__(self,title, price, rating, stock):
    self.__title = title
    self.__price = price
    self.__rating = rating
    self.__stock = stock

def toString(self):
    return "Title: {}\nPrice: {}\nRating: {}\nStock: {}\n".format(  self.__title,
                                                                    self.__price,
                                                                    self.__rating,
                                                                    self.__stock)

def return_price(self):
    return self.__price

def return_name(self):
    return self.__title

def return_rating(self):
    return self.__rating

def return_stock(self):
    return self.__stock
3 Answers
Related