#!/usr/bin/python3 # Example of class usage in python. # Let's define a new class to represent fraction numbers class fraction(object): def __init__(self, numer, denom): self.numer = numer self.denom = denom def __str__(self): return str(self.numer) + ' / ' + str(self.denom) # Getters definition # We almost never want to directly manipulate the data inside objects, # so, we should (almost) always define getters and setters methods for data # manipulation inside a class def getNumer(self): return self.numer def getDenom(self): return self.denom def __add__(self, other): new_numer = (self.getNumer() * other.getDenom()) + \ (other.getNumer() * self.getDenom()) new_denom = (self.getDenom() * other.getDenom()) return fraction(new_numer, new_denom) def __sub__(self, other): new_numer = (self.getNumer() * other.getDenom()) - \ (other.getNumer() * self.getDenom()) new_denom = (self.getDenom() * other.getDenom()) return fraction(new_numer, new_denom) # Return the float representation of the fraction def convert(self): return self.getNumer() / self.getDenom() # Set example # Create a class to represent a set of numbers which are not allowed to be # repeated class Set(object): def __init__(self): self.set = [] def insert(self, nval): if nval not in self.set: self.set.append(nval) else: raise ValueError(str(nval) + " is already in the set") def remove(self,nval): try: self.set.remove(nval) except: raise ValueError(str(nval) + " not found!") def member(self, nval): return nval in self.set def __str__(self): self.set.sort() result = '' for i in self.set: result += str(i) + ', ' return '{' + result[:-2] + '}'