# A quick example of polymorphism at work in python class Food(object): def __init__(self, name, calories): self.name = name self.calories = calories def tastesLike(self): raise NotImplementedException("Subclasses are responsible for creating this method") class HotDog(Food): def tastesLike(self): return "Extremely processed meat" class Hamburger(Food): def tastesLike(self): return "grilled goodness" class ChickenPatty(Food): def tastesLike(self): return "tastes like chicken" dinner = [] dinner.append(HotDog('Beef/Turkey BallPark', 230)) dinner.append(Hamburger('Lowfat Beef Patty', 260)) dinner.append(ChickenPatty('Micky Mouse shaped Chicken Tenders', 170)) # even though each course of the dinner is a differnet type # we can process them all in the same loop for course in dinner: print course.name + " is type " + str(type(course)) print " has " + str(course.calories) + " calories " print " and tastes like " + course.tastesLike() # my output: # #Beef/Turkey BallPark is type <class '__main__.HotDog'> # has 230 calories # and tastes like Extremely processed meat #Lowfat Beef Patty is type <class '__main__.Hamburger'> # has 260 calories # and tastes like grilled goodness #Micky Mouse shaped Chicken Tenders is type <class '__main__.ChickenPatty'> # has 170 calories # and tastes like tastes like chicken
A python example based blog that shows how to accomplish python goals and how to correct python errors.
Showing posts with label string. Show all posts
Showing posts with label string. Show all posts
Thursday, February 25, 2010
Python - a simple polymorphism example
Labels:
inheritance,
object,
polymorphism,
string,
type
Saturday, October 3, 2009
Python - storing persistance objects in file with shelve
# The shelve module is used to store objects in a file. # You use the file like a glorified dict with key, value # pairs. import shelve # shelve python doc objList = [] filename = 'shelveFile.shelve' # open and or create the file file = shelve.open(filename) # Here is an example class we'll create # instances of and then store in the file class ExampleClass(object): def __init__(self): self.a = 0 self.b = 1 self.c = 2 self.k = 0 def getTotal(self): return self.a + self.b + self.c # create several instances for i in xrange(3): obj = ExampleClass() obj.k = i obj.a = i+1 obj.b = i+2 obj.c = i+3 objList.append(obj) # now add the objects to file object for i in objList: # keys are strings file[str(i.k)] = i # The sync command will explicitly # write changes to file file.sync() # Closing the object will also execute # the sync command file.close() # The file (and the 3 objects in it # are now saved. # Now we'll reopen and verify the data is there file2 = shelve.open(filename) # Iterate through and print out # the object attributes (to verify # they are the values we assigned previously) for i in file2.keys(): j = file2[str(i)] print "a,b,c,k = ", j.a, j.b, j.c, j.k #output: #a,b,c,k = 1 2 3 0 #a,b,c,k = 3 4 5 2 #a,b,c,k = 2 3 4 1 # You can edit these values. # Here will change all 'a' attributes to 7 for i in file2.keys(): # Take note of how these changes were made. # You cannot merely alter an attribute # like file2[str(i)].a = 7 (this will # not work). j = file2[str(i)] j.a = 7 file2[str(j.k)] = j # And verify that changes are made: for i in file2.keys(): j = file2[str(i)] print "a,b,c,k = ", j.a, j.b, j.c, j.k #output: #a,b,c,k = 7 2 3 0 #a,b,c,k = 7 4 5 2 #a,b,c,k = 7 3 4 1 # now close the shelve file so you can # use the data objects another day. file2.close()
Thursday, October 1, 2009
Python - printing complex objects with pretty printing
# Pretty printing (using the pprint module) transforms # python objects into human readable output. # # Use pprint when you need to display a complex # data structure to users. import string import pprint # pprint python doc d = {} for i in string.ascii_lowercase: d[i] = string.ascii_lowercase.replace(i, ' ') print "not useful output:" print d # output: # not useful output: # {'a': ' bcdefghijklmnopqrstuvwxyz', 'c': 'ab defghijklmnopqrstuvwxyz', 'b': # 'a cdefghijklmnopqrstuvwxyz', 'e': 'abcd fghijklmnopqrstuvwxyz', 'd': 'abc # efghijklmnopqrstuvwxyz', 'g': 'abcdef hijklmnopqrstuvwxyz', 'f': 'abcde ghij # klmnopqrstuvwxyz', 'i': 'abcdefgh jklmnopqrstuvwxyz', 'h': 'abcdefg ijklmnop # qrstuvwxyz', 'k': 'abcdefghij lmnopqrstuvwxyz', 'j': 'abcdefghi klmnopqrstuv # wxyz', 'm': 'abcdefghijkl nopqrstuvwxyz', 'l': 'abcdefghijk mnopqrstuvwxyz', # 'o': 'abcdefghijklmn pqrstuvwxyz', 'n': 'abcdefghijklm opqrstuvwxyz', 'q': ' # abcdefghijklmnop rstuvwxyz', 'p': 'abcdefghijklmno qrstuvwxyz', 's': 'abcdef # ghijklmnopqr tuvwxyz', 'r': 'abcdefghijklmnopq stuvwxyz', 'u': 'abcdefghijkl # mnopqrst vwxyz', 't': 'abcdefghijklmnopqrs uvwxyz', 'w': 'abcdefghijklmnopqr # stuv xyz', 'v': 'abcdefghijklmnopqrstu wxyz', 'y': 'abcdefghijklmnopqrstuvwx # z', 'x': 'abcdefghijklmnopqrstuvw yz', 'z': 'abcdefghijklmnopqrstuvwxy '} # # All the data is there but it is difficult to read. # You can use pprint (pretty print) to make things easy to read. pprint # formats python datastructures to be human readable. print "human readable output:" pprint.pprint(d, indent=4) # output: #human readable output: #{ 'a': ' bcdefghijklmnopqrstuvwxyz', # 'b': 'a cdefghijklmnopqrstuvwxyz', # 'c': 'ab defghijklmnopqrstuvwxyz', # 'd': 'abc efghijklmnopqrstuvwxyz', # 'e': 'abcd fghijklmnopqrstuvwxyz', # 'f': 'abcde ghijklmnopqrstuvwxyz', # 'g': 'abcdef hijklmnopqrstuvwxyz', # 'h': 'abcdefg ijklmnopqrstuvwxyz', # 'i': 'abcdefgh jklmnopqrstuvwxyz', # 'j': 'abcdefghi klmnopqrstuvwxyz', # 'k': 'abcdefghij lmnopqrstuvwxyz', # 'l': 'abcdefghijk mnopqrstuvwxyz', # 'm': 'abcdefghijkl nopqrstuvwxyz', # 'n': 'abcdefghijklm opqrstuvwxyz', # 'o': 'abcdefghijklmn pqrstuvwxyz', # 'p': 'abcdefghijklmno qrstuvwxyz', # 'q': 'abcdefghijklmnop rstuvwxyz', # 'r': 'abcdefghijklmnopq stuvwxyz', # 's': 'abcdefghijklmnopqr tuvwxyz', # 't': 'abcdefghijklmnopqrs uvwxyz', # 'u': 'abcdefghijklmnopqrst vwxyz', # 'v': 'abcdefghijklmnopqrstu wxyz', # 'w': 'abcdefghijklmnopqrstuv xyz', # 'x': 'abcdefghijklmnopqrstuvw yz', # 'y': 'abcdefghijklmnopqrstuvwx z', # 'z': 'abcdefghijklmnopqrstuvwxy '} # # Formatted in this fashion its easy to see what # data is being stored in the dict.
Labels:
dict,
pprint,
PrettyPrinter,
python,
string
Thursday, September 17, 2009
printing options
# python has several options for printing out literals and variables# the following four print lines all produce the same result
name = "steve"
num = 623
d = {}
d["name"] = name
d["num"] = num
print "Hello " + name + " your number is " + str(num)
print "Hello", name, "your number is", num
print "Hello %s your number is %d" % (name, num)
print "Hello %(name)s your number is %(num)d" %d
output:Hello steve your number is 623
Hello steve your number is 623
Hello steve your number is 623
Hello steve your number is 623
Wednesday, June 24, 2009
python - simple casting
# string to int a = int("22") # string to float a = float("22") # int to string a = str(22) # int to float a = float(22) #float to string a = str(22.0) #float to int a = int(22.0)
Subscribe to:
Posts (Atom)