Technology always evolves. What are classes and where do they come from?
In the very early days of computing, programmers wrote only commands.
Reusable group of statements, helped to structure that code and it improved readability.
Classes are used to create objects which have functions and variables. Strings are examples of objects: A string book has the functions book.replace() and book.lowercase(). This style is often called object oriented programming.
Lets take a dive!
- Complete Python Bootcamp: Go from zero to hero in Python
- Python Beyond the Basics – Object-Oriented Programming
We can create virtual objects in Python. A virtual object can contain variables and methods. A program may have many different types and are created from a class. Example:
class User: name = "" def __init__(self, name): self.name = name def sayHello(self): print "Hello, my name is " + self.name # create virtual objects james = User("James") david = User("David") eric = User("Eric") # call methods owned by virtual objects james.sayHello() david.sayHello()
Run this program. In this code we have 3 virtual objects: james, david and eric. Each object is instance of the User class.
In this class we defined the sayHello() method, which is why we can call it for each of the objects. The __init__() method is called the constructor and is always called when creating an object. The variables owned by the class is in this case “name”. These variables are sometimes called class attributes.
We can create methods in classes which update the internal variables of the object. This may sound vague but I will demonstrate with an example.
We define a class CoffeeMachine of which the virtual objects hold the amount of beans and amount of water. Both are defined as a number (integer). We may then define methods that add or remove beans.
def addBean(self): self.bean = self.bean + 1 def removeBean(self): self.bean = self.bean - 1
We do the same for the variable water. As shown below:
class CoffeeMachine: name = "" beans = 0 water = 0 def __init__(self, name, beans, water): self.name = name self.beans = beans self.water = water def addBean(self): self.beans = self.beans + 1 def removeBean(self): self.beans = self.beans - 1 def addWater(self): self.water = self.water + 1 def removeWater(self): self.water = self.water - 1 def printState(self): print "Name = " + self.name print "Beans = " + str(self.beans) print "Water = " + str(self.water) pythonBean = CoffeeMachine("Python Bean", 83, 20) pythonBean.printState() print "" pythonBean.addBean() pythonBean.printState()
Run this program. The top of the code defines the class as we described. The code below is where we create virtual objects. In this example we have exactly one object called “pythonBean”. We then call methods which change the internal variables, this is possible because we defined those methods inside the class. Output:
Name = Python Bean Beans = 83 Water = 20 Name = Python Bean Beans = 84 Water = 20