Home Accessibility Courses Twitter The Mouth Facebook Resources Site Map About Us Contact
 
For 2023 (and 2024 ...) - we are now fully retired from IT training.
We have made many, many friends over 25 years of teaching about Python, Tcl, Perl, PHP, Lua, Java, C and C++ - and MySQL, Linux and Solaris/SunOS too. Our training notes are now very much out of date, but due to upward compatability most of our examples remain operational and even relevant ad you are welcome to make us if them "as seen" and at your own risk.

Lisa and I (Graham) now live in what was our training centre in Melksham - happy to meet with former delegates here - but do check ahead before coming round. We are far from inactive - rather, enjoying the times that we are retired but still healthy enough in mind and body to be active!

I am also active in many other area and still look after a lot of web sites - you can find an index ((here))
Really Simple Class and Inheritance example in Python

It's so tempting when writing a simple training example to get excited and add lots of features - so that you then end up with an example that's anything but a simple training example!

Here's an example - just about my shortest and simplest ever - that shows a base class, a subclass, inheritance, polymorphism, and a test harness all in a single page of Python:

  class pet(object):
    def __init__(current,name,age,weight,dailytins):
      current.tinnies = dailytins
      current.name = name
      current.age = age
      current.weight = weight * 2.2
    def getfood(self,days):
      return float(self.tinnies * days)
    def __str__(this):
      return "Woof says " + this.name
  class dog(pet):
    pass
  class cat(pet):
    def __str__(this):
      return "Miaow says " + this.name
  if __name__ == "__main__":
    team = [dog("Gypsy",5,36,3),dog("Billy",3,32,3.5), \
      cat("Charlie",15,2,0.33)]
    for hound in team:
      tins = hound.getfood(7)
      print str(hound),"will eat",tins,"tins"


With comments too - and sample output - you'll find that [here].

There's a further example in the course notes, but oen which splits the application into separate files for each class. Whether you want to keep classes together in groups of to separate them depends on if they're going to be:
  a) distributed together
  b) maintained by the same person
  c) updated on the same cycle
  d) used with each other in applications
and if you can answer yes, yes, yes and yes ... then you should consider looking after / maintaining them in one unit.

The source code for the split example is
[here] for the main test program
[here] for the first subclass
[here] for the second subclass
[here] for the base class
and there's some sample data [here].

Next Python course - next month. See [here].
(written 2013-03-04)

 
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
Y116 - Python - Applying OO design techniques and best practise
  [340] Code and code maintainance efficiency - (2005-06-08)
  [656] Think about your design even if you don't use full UML - (2006-03-24)
  [668] Python - block insets help with documentation - (2006-04-04)
  [836] Build on what you already have with OO - (2006-08-17)
  [945] Code quality counts - (2006-11-26)
  [1181] Good Programming practise - where to initialise variables - (2007-05-09)
  [2363] Alpaca Case or Camel Case - (2009-08-16)
  [2407] Testing code in Python - doctest, unittest and others - (2009-09-16)
  [2485] How do I set up a constant in Python? - (2009-10-31)
  [2523] Plan your application before you start - (2009-12-02)
  [2604] Tips for writing a test program (Ruby / Python / Java) - (2010-01-29)
  [3887] Inheritance, Composition and Associated objects - when to use which - Python example - (2012-10-10)
  [4118] We not only teach PHP and Python - we teach good PHP and Python Practice! - (2013-06-18)
  [4359] How to avoid too many recalculations within an object - (2014-12-21)
  [4718] Defining an object that is a modified standard type in Python - (2016-11-02)

Y112 - Python - Objects - Intermediate
  [296] Using a Python dictionary as a holder of object attributes - (2005-04-30)
  [383] Overloading of operators on standard objects in Python - (2005-07-19)
  [477] Class, static and unbound variables - (2005-10-25)
  [831] Comparison of Object Oriented Philosophy - Python, Java, C++, Perl - (2006-08-13)
  [903] Pieces of Python - (2006-10-23)
  [964] Practical polymorphism in action - (2006-12-04)
  [1146] __new__ v __init__ - python constructor alternatives? - (2007-04-14)
  [1217] What are factory and singleton classes? - (2007-06-04)
  [1517] Python - formatting objects - (2008-01-24)
  [1644] Using a utility method to construct objects of different types - Python - (2008-05-17)
  [1661] Equality, sameness and identity - Python - (2008-05-31)
  [1819] Calling base class constructors - (2008-10-03)
  [2368] Python - fresh examples of all the fundamentals - (2009-08-20)
  [2409] TypeError: super() argument 1 must be type, not classobj (Python) - (2009-09-18)
  [2693] Methods that run on classes (static methods) in Python - (2010-03-25)
  [2717] The Multiple Inheritance Conundrum, interfaces and mixins - (2010-04-11)
  [2720] Multiple inheritance in Python - complete working example - (2010-04-14)
  [2722] Mixins example in Python - (2010-04-14)
  [2764] Python decorators - your own, staticmethod and classmethod - (2010-05-14)
  [2785] The Light bulb moment when people see how Object Orientation works in real use - (2010-05-28)
  [2889] Should Python classes each be in their own file? - (2010-07-27)
  [2905] Defining static methods in Python - (2010-08-05)
  [2994] Python - some common questions answered in code examples - (2010-10-10)
  [3002] A list of special method and attribute names in Python - (2010-10-17)
  [3442] A demonstration of how many Python facilities work together - (2011-09-16)
  [3472] Static variables in functions - and better ways using objects - (2011-10-10)
  [3524] Metaclasses (Python) and Metatables (Lua) - (2011-11-17)
  [3796] Backquote, backtic, str and repr in Python - conversion object to string - (2012-07-05)
  [4094] Python Properties - how and why - (2013-05-18)
  [4344] Python base and inherited classes, test harness and unit testing - new examples - (2014-12-07)
  [4356] Object factories in C++, Python, PHP and Perl - (2014-12-19)
  [4366] Changing what operators do on objects - a comparison across different programming languages - (2014-12-26)
  [4410] A good example of recursion - a real use in Python - (2015-02-01)
  [4449] Spike solution, refactoring into encapsulated object methods - good design practise - (2015-03-05)
  [4450] Deciding whether to use parameters, conditional statements or subclasses - (2015-03-05)
  [4541] Setting up and tearing down with the Python with keyword - (2015-10-16)
  [4649] Object and Static methods - what is the difference; example in Python 3 - (2016-02-17)
  [4717] with in Python - examples of use, and of defining your own context - (2016-11-02)
  [4719] Nesting decorators - (2016-11-02)

Y106 - Object Oriented Python
  [834] Python makes University Challenge - (2006-08-15)
  [900] Python - function v method - (2006-10-20)
  [1306] Python class rattling around - (2007-08-16)
  [1348] Screw it or Glue it? Access to Object variables - a warning - (2007-09-12)
  [1925] Introduction to Object Oriented Programming - (2008-12-06)
  [2017] Python - a truly dynamic language - (2009-01-30)
  [2169] When should I use OO techniques? - (2009-05-11)
  [3085] Object Oriented Programming for Structured Programmers - conversion training - (2010-12-14)
  [3399] From fish, loaves and apples to money, plastic cards and BACS (Perl references explained) - (2011-08-20)
  [3436] Moving from scripting to Object Orientation in Python - (2011-09-13)
  [3673] Object oriented or structured - a comparison in Python. Also writing clean regular expressions - (2012-03-26)
  [3878] From Structured to Object Oriented Programming. - (2012-10-02)
  [3947] this or self - what are they, and what is the difference? (Python) - (2012-12-08)
  [4021] Spike solution, refactored and reusable, Python - Example - (2013-02-28)
  [4129] Simple OO demonstration in C++, comparison to Python - (2013-07-01)
  [4448] What is the difference between a function and a method? - (2015-03-04)
  [4591] From single block to structure and object oriented programming - (2015-12-02)
  [4650] Why populate object with values as you construct them? - (2016-02-18)
  [4721] When to check an object type - Python isinstance example - (2016-11-03)


Back to
Collections in Python - list tuple dict and string.
Previous and next
or
Horse's mouth home
Forward to
Exception, Lambda, Generator, Slice, Dict - examples in one Python program
Some other Articles
Easier public transport from Melksham to Bristol Airport
Showing what programming errors look like - web site pitfall
What is on OUR pond?
Exception, Lambda, Generator, Slice, Dict - examples in one Python program
Really Simple Class and Inheritance example in Python
Collections in Python - list tuple dict and string.
The coffee of the Stars comes to Melksham
Backups, Codebase, Strategy and more - dealing with forum incidents
SQL databases from Python - an SQLite example
Melksham to Chippenham (Station) bus services - times and routes
4759 posts, page by page
Link to page ... 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96 at 50 posts per page


This is a page archived from The Horse's Mouth at http://www.wellho.net/horse/ - the diary and writings of Graham Ellis. Every attempt was made to provide current information at the time the page was written, but things do move forward in our business - new software releases, price changes, new techniques. Please check back via our main site for current courses, prices, versions, etc - any mention of a price in "The Horse's Mouth" cannot be taken as an offer to supply at that price.

Link to Ezine home page (for reading).
Link to Blogging home page (to add comments).

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2024: 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01144 1225 708225 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho

PAGE: http://www.wellho.net/mouth/4028_.html • PAGE BUILT: Sun Oct 11 16:07:41 2020 • BUILD SYSTEM: JelliaJamb