Most methods in classes that your write will be run on / applied to individual objects within that class - you'll be asking for the colour of a marker pen, or setting the price of a hotel room. You will NOT - typically - have a model in which all marker pens share the same colour.
But - just occasionally - you need a method that applies to the class as a whole, and this is known as a class (or static) method, and there are various ways of specifying such methods in your code.
In Java, for example, you can simply declare a method to be static (and you are then limited within the code of the method to only handling static variables in the class, as the method hasn't been run on any particular instance of the object).
In Python (from release 2.4), you can use an
@staticmethod decorator before you declare your method that's to be static - see
this example. You can also - in all versions - use something like
counter = classmethod(getcount), and again we have a full example on the web site
here
In Ruby, you declare the method name with a leading
self. in front of the method name - so you declare
def getnt()
rather than
def self.getnt()
You can also use the class name in front of the method name - I show the alternative syntax in a full example
[here]
but I'm going to discourage that - for if you rename the class, you really don't want to have to start messing about and renaming methods within the class as well!
(written 2010-02-01)
Associated topics are indexed under
J706 - Java - Objects and Classes [2651] Calculation within objects - early, last minute, or cached? - (2010-02-26)
[2422] Looking inside Java classes - javap and javadoc - (2009-09-25)
[2169] When should I use OO techniques? - (2009-05-11)
[1925] Introduction to Object Oriented Programming - (2008-12-06)
[1906] Long, Longer, Longest in Java - (2008-11-25)
[1500] First Class Java. First step and moving forward. - (2008-01-10)
[1296] An example of Java Inheritance from scratch - (2007-08-08)
[1163] A better alternative to cutting and pasting code - (2007-04-26)
[477] Class, static and unbound variables - (2005-10-25)
[96] Variable Scope - (2004-10-22)
Y212 - Python - Code testing, patterns, profiles and optimisation. [4090] Test Driven Development in Python - Customer Comes First - (2013-05-16)
[3658] Using Make for a distribution - (2012-03-17)
[3478] Testing your Python classes with the unittest package - how to - (2011-10-14)
[3464] Passing optional and named parameters to python methods - (2011-10-04)
[3442] A demonstration of how many Python facilities work together - (2011-09-16)
[3441] Pressing ^C in a Python program. Also Progress Bar. - (2011-09-15)
[2123] Using Python with OpenOffice - (2009-04-09)
[1555] Advanced Python, Perl, PHP and Tcl training courses / classes - (2008-02-25)
[1148] Python decorators - wrapping a method call in extra code - (2007-04-15)
[1146] __new__ v __init__ - python constructor alternatives? - (2007-04-14)
[1140] Python GTK - Widget, Packing, Event and Feedback example - (2007-04-09)
[235] Preparation for a day's work - (2005-03-04)
R105 - Ruby - Classes and Objects [4009] Clear, concise examples - Ruby classes and objects. - (2013-02-17)
[3421] Ruby off the Rails? - (2011-09-06)
[2609] Scope of variables - important to Ruby on Rails - (2010-01-31)
[2603] Ruby objects - a primer - (2010-01-29)
[2292] Object Orientation in Ruby - intermediate examples - (2009-07-16)
[983] Blessing in Perl / Member variable in Ruby - (2006-12-14)
R108 - Ruby - More Classes and Objects [3782] Standard methods available on all objects in Ruby - (2012-06-23)
[3781] Private, Protected, Public in Ruby. What about interfaces and abstract classes in Ruby? - (2012-06-23)
[3760] Why you should use objects even for short data manipulation programs in Ruby - (2012-06-10)
[3260] Ruby - a training example that puts many language elements together to demonstrate the whole - (2011-04-23)
[3158] Ruby training - some fresh examples for string handling applications - (2011-02-05)
[3154] Changing a class later on - Ruby - (2011-02-02)
[3142] Private and Public - and things between - (2011-01-22)
[2980] Ruby - examples of regular expressions, inheritance and polymorphism - (2010-10-02)
[2977] What is a factory method and why use one? - Example in Ruby - (2010-09-30)
[2717] The Multiple Inheritance Conundrum, interfaces and mixins - (2010-04-11)
[2623] Object Oriented Ruby - new examples - (2010-02-03)
[2620] Direct access to object variable (attributes) in Ruby - (2010-02-02)
[2604] Tips for writing a test program (Ruby / Python / Java) - (2010-01-29)
[2601] Ruby - is_a? v instance_of? - what is the difference? - (2010-01-27)
[1587] Some Ruby programming examples from our course - (2008-03-21)
[1217] What are factory and singleton classes? - (2007-06-04)
[656] Think about your design even if you don't use full UML - (2006-03-24)
[184] MTBF of coffee machines - (2005-01-20)
56cf
Some other Articles
Passing code to procedures and yield in RubyWhat are Ruby Symbols?Comparing floating point numbers - a word of caution and a solutionDefining a static method - Java, Python and RubyString to number conversion with error trapping in RubyNeatly formatting results into a tableConstants in RubyThe Model, View, Controller architecture (MVC) - what, why and how.Sunday Evening, City of London