Have a great bank holiday, folks. For any sad (or happy) Python programmers out there, here's a simple example of __getattr__ in use. I've got an object of type thingy with all its atributes held in a dictionary, but I wanted to access them as if each was a separate attribute. "I couldn't find a simple example elsewhere, so I wrote one"
"""Using a dictionary as an attribute handler in Python"""
class thingy:
def __init__(self,indict):
self.stuff = indict
def __getattr__(self,which):
return self.stuff.get(which,None)
about = {"colour":"blue", "type":"flipchart marker"}
markerpen = thingy(about)
print markerpen.colour
print markerpen.age
Further examples at
our module pages or learn more with us on our
Python course
(written 2005-04-30, updated 2006-06-05)
Associated topics are indexed under
Y112 - Python - Objects - Intermediate [4028] Really Simple Class and Inheritance example in Python - (2013-03-04)
[3887] Inheritance, Composition and Associated objects - when to use which - Python example - (2012-10-10)
[3796] Backquote, backtic, str and repr in Python - conversion object to string - (2012-07-05)
[3524] Metaclasses (Python) and Metatables (Lua) - (2011-11-17)
[3472] Static variables in functions - and better ways using objects - (2011-10-10)
[3442] A demonstration of how many Python facilities work together - (2011-09-16)
[3002] A list of special method and attribute names in Python - (2010-10-17)
[2994] Python - some common questions answered in code examples - (2010-10-10)
[2905] Defining static methods in Python - (2010-08-05)
[2889] Should Python classes each be in their own file? - (2010-07-27)
[2785] The Light bulb moment when people see how Object Orientation works in real use - (2010-05-28)
[2764] Python decorators - your own, staticmethod and classmethod - (2010-05-14)
[2722] Mixins example in Python - (2010-04-14)
[2720] Multiple inheritance in Python - complete working example - (2010-04-14)
[2717] The Multiple Inheritance Conundrum, interfaces and mixins - (2010-04-11)
[2693] Methods that run on classes (static methods) in Python - (2010-03-25)
[2485] How do I set up a constant in Python? - (2009-10-31)
[2409] TypeError: super() argument 1 must be type, not classobj (Python) - (2009-09-18)
[2368] Python - fresh examples of all the fundamentals - (2009-08-20)
[1819] Calling base class constructors - (2008-10-03)
[1661] Equality, sameness and identity - Python - (2008-05-31)
[1644] Using a utility method to construct objects of different types - Python - (2008-05-17)
[1517] Python - formatting objects - (2008-01-24)
[1217] What are factory and singleton classes? - (2007-06-04)
[1146] __new__ v __init__ - python constructor alternatives? - (2007-04-14)
[964] Practical polymorphism in action - (2006-12-04)
[903] Pieces of Python - (2006-10-23)
[831] Comparison of Object Oriented Philosophy - Python, Java, C++, Perl - (2006-08-13)
[656] Think about your design even if you don't use full UML - (2006-03-24)
[477] Class, static and unbound variables - (2005-10-25)
[383] Overloading of operators on standard objects in Python - (2005-07-19)
5661
Some other Articles
Dentist's Waiting Room SyndromeWhat - no switch or case statement?Sharing pictures of WiltshireA reminder that the customer is KingUsing a Python dictionary as a holder of object attributesPricing strategy - simple and fairPython generator functions, lambdas, and iteratorsCourse follow-upsElegant languages - Perl, PHP, PythonWhy are we no. 404