#! /usr/bin/env python ################################################################################ ## Python Object Orientated example by rowinggolfer ## ## the same object... but extra functionality added in layers ## ## ## ## A noteable "Gotcha" for newbs is the __init__ function. ## ## the base class in this example sets some important attributes in this ## ## function. Therefore classes which inherit from it, but be careful if ## ## re-implementing this function ## ## NOTE - the teenager class does NOT overwrite this function... hence when ## ## a teenager is initiated, python looks up the class hierarchy and executes ## ## the first __init__ method it finds.. in this case the Toddler's __init__ ## ## ## ## ## ## Run this script, and study the output. ## ## ## ## Pay special attention to the attribute "description, and see how it is ## ## altered mid method in the teenage years. ## ## ## ################################################################################ from datetime import date from base64 import b64decode class TimritBaby(object): ''' a baby has a date of birth, a name, and limited functionality ''' def __init__(self, date_of_birth): print "TimritBaby initiated" self.name = 'Scott Murtz' self.dob = date_of_birth self.description = "(a baby)" def poop(self): print " %s %s can Poop!"% (self.name, self.description) class TimritToddler(TimritBaby): ''' a toddler has a new method ''' def __init__(self, dob): # call the init method of the base class.. # otherwise the name attribute won't work!! print "\nTimritToddler initiated" TimritBaby.__init__(self, dob) self.description = "(a toddler)" def walk(self): print " %s %s can Walk!"% (self.name, self.description) class TimritTeenager(TimritToddler): ''' a teenager with a secret habit ''' def private_time(self): self.description = "(now a teeneager)" message = b64decode('aXMgbWFzdHVyYmF0aW5nIGFnYWlu') print " %s %s %s"% (self.name, self.description, message) if __name__ == "__main__": baby = TimritBaby(date(1968,1,1)) baby.poop() try: baby.walk() except AttributeError as e: print "ERROR - WHOOPS!", e teenager = TimritTeenager(date(1968,1,1)) teenager.poop() teenager.walk() teenager.private_time() teenager.walk()
Random musings on GNU+Linux. open source software, and Python. The main purpose of this blog is to archive (for myself) what I am learning about these wonderful technologies/communities
Tuesday, 28 September 2010
Object Orientation Example
I knocked this example up today for a friend on IRC. Thought I would post it here.
Sunday, 12 September 2010
fuzzymatching in postgres on ubuntu
I had a battle getting the soundex function installed into my database on postgres.
but here's how I succeeded.
One - Install the postgres-contrib package
Two - change user to postgres (a database superuser created on install of postgresql
Three - pipe the supplied script into the database (my database is called "openmolar_demo")
Four - test it!
but here's how I succeeded.
One - Install the postgres-contrib package
sudo apt-get install postgresql-contrib
Two - change user to postgres (a database superuser created on install of postgresql
neil@slim-maroon:~$ sudo su - postgres postgres@slim-maroon:~$
Three - pipe the supplied script into the database (my database is called "openmolar_demo")
postgres@slim-maroon:~$ psql -d openmolar_demo -f /usr/share/postgresql/8.4/contrib/fuzzystrmatch.sql SET CREATE FUNCTION CREATE FUNCTION CREATE FUNCTION CREATE FUNCTION CREATE FUNCTION CREATE FUNCTION CREATE FUNCTION CREATE FUNCTION postgres@slim-maroon:~$
Four - test it!
openmolar_demo=> SELECT soundex('Neil'); soundex --------- N400 (1 row)
Tuesday, 7 September 2010
Postgres for openmolar2

Main Reasons.
- it's a clean break with the past
- GNUmed use postgres
- active development
- standards compliance
- not owned by oracle
Thursday, 2 September 2010
Pynotify style notifications
The notifcation system for openmolar2 is nearly complete.
Why not use pynotify? Cross-platform is a goal here.
Why not use pynotify? Cross-platform is a goal here.
Subscribe to:
Posts (Atom)