#! /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
I've been playing with postgres all morning, and have decided that the next version of openmolar will use it in preference to MySQL.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:
Comments (Atom)