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))
Screw it or Glue it? Access to Object variables - a warning

If you screw two pieces of material together, you have the opportunity, later on, to unscrew them ... resuse them differently, install a waterproof membrane between them, and so on. But if you glue them together, later modification will be much harder or perhaps impossible. And in a similar way, if you're connecting two pieced of software together it's better to screw them than to glue them. What am I getting at?

If you access a member variable within an object directly from your main calling code, then you don't leave yourself the opportunity to intersperse some extra check or twist later on, whereas if you access all member variables via methods - even if they are really just empty wrappers, you leave yourself the flexibility for later. Let's see an example.

Here is a (Python) class:

class pidgeon:
  def __init__(self, name, value):
    self.name=name
    self.value=value
  def getvalue(self):
    return self.value


which I can use like this:

george = pidgeon("John Smith",200)
gina = pidgeon("Jenny Smith",50)
print "Value of George is",george.getvalue();
print "Value of Gina is",gina.getvalue();


and it will print out 200 and 50. Here is an alternative class:

class woodpecker:
  def __init__(self, name, value):
    self.name=name
    self.value=value


and I can access the data, more simply, as follows:

print "Value of Gerry is",gerry.value;
print "Value of Graeme is",graeme.value;


I now want to set a mimimum value of 75 pounds on all birds - pidgeons and woodpeckers. With pidgeons, it's easy - I just modify the getvalue method as follows:

  def getvalue(self):
    if self.value < 75: return 75
    return self.value


but with my woodpecker class I'm stuck.

Pidgeons are like screws, and woodpeckers stick like glue!

Full Source code of example.
(written 2007-09-12)

 
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
Y106 - Object Oriented Python
  [477] Class, static and unbound variables - (2005-10-25)
  [834] Python makes University Challenge - (2006-08-15)
  [900] Python - function v method - (2006-10-20)
  [1306] Python class rattling around - (2007-08-16)
  [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)
  [2604] Tips for writing a test program (Ruby / Python / Java) - (2010-01-29)
  [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)
  [4028] Really Simple Class and Inheritance example in Python - (2013-03-04)
  [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)

Q909 - Object Orientation and General technical topics - Object Orientation: Composite Objects
  [592] NOT Gone phishing - (2006-02-05)
  [1345] Perl and Shell coding standards / costs of an IT project - (2007-09-11)
  [2170] Designing a heirarcy of classes - getting inheritance right - (2009-05-11)
  [2641] Object Oriented Programming in PHP - (2010-02-19)
  [2865] Relationships between Java classes - inheritance, packaging and others - (2010-07-10)
  [2922] Getting the OO design write - with PHP a example - (2010-08-14)
  [3142] Private and Public - and things between - (2011-01-22)
  [3152] Jargon busting - (2011-01-30)
  [3251] C++ - objects that are based on other objects, saving coding and adding robustness - (2011-04-17)
  [3609] How do classes relate to each other? Associated Classes - (2012-02-12)
  [3979] Extended and Associated objects - what is the difference - C++ example - (2013-01-18)
  [4377] Designing a base class and subclasses, and their extension, in C++ - (2015-01-01)
  [4394] Philosophy behind object design - and how I applied in to a Java example - (2015-01-14)
  [4450] Deciding whether to use parameters, conditional statements or subclasses - (2015-03-05)


Back to
Wireless Internet Access at hotels - an update and some pitfalls
Previous and next
or
Horse's mouth home
Forward to
Cash is not an acceptable way of paying
Some other Articles
Actionscript / Flash / Flex (IAQ/FAQ)
Compressing web pages sent out from server. Is it worth it?
FSB (Federation of Small Businesses) Western Region
Cash is not an acceptable way of paying
Screw it or Glue it? Access to Object variables - a warning
Wireless Internet Access at hotels - an update and some pitfalls
Evening, Devizes and Sells Green
Catching up on indexing our resources
Melksham Laundrette
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/1348_.html • PAGE BUILT: Sun Oct 11 16:07:41 2020 • BUILD SYSTEM: JelliaJamb