Classes And Objects In Python
Python Classes and Objects: Comprehensive Theory
Python is an object-oriented programming language. Almost everything in Python is an object, with its properties and methods.
1. What is a Class?
A Class is like an object constructor, or a "blueprint" for creating objects. Think of a class as a template (e.g., a "Car" blueprint) and an object as a specific instance of that template (e.g., a specific "Red Tesla").
Creating a Class
To create a class, use the keyword class:
class MyClass:
x = 5
2. What is an Object?
An Object is an instance of a class. When a class is defined, only the description for the object is defined. Therefore, no memory or storage is allocated.
Creating an Object
Now we can use the class named MyClass to create objects:
p1 = MyClass()
print(p1.x) # Output: 5
__init__()
To understand the meaning of classes we have to understand the built-in __init__() function. All classes have a function called __init__(), which is always executed when the class is being initiated.
Use the __init__() function to assign values to object properties, or other operations that are necessary to do when the object is being created:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person("John", 36)
print(p1.name)
print(p1.age)
[!IMPORTANT] The
__init__()function is called automatically every time the class is being used to create a new object.
self
The self parameter is a reference to the current instance of the class, and is used to access variables that belong to the class.
It does not have to be named self , you can call it whatever you like, but it has to be the first parameter of any function in the class:
class Person:
def __init__(mysillyobject, name, age):
mysillyobject.name = name
mysillyobject.age = age
def myfunc(abc):
print("Hello my name is " + abc.name)
p1 = Person("John", 36)
p1.myfunc()
5. Object Methods
Objects can also contain methods. Methods in objects are functions that belong to the object.
class Dog:
def __init__(self, name, breed):
self.name = name
self.breed = breed
def bark(self):
print(f"{self.name} says Woof!")
my_dog = Dog("Rex", "German Shepherd")
my_dog.bark()
6. Modifying and Deleting
- Modify Properties: You can modify properties on objects like this:
p1.age = 40 - Delete Properties: You can delete properties on objects by using the
delkeyword:del p1.age - Delete Objects: You can delete objects by using the
delkeyword:del p1
pass
class definitions cannot be empty, but if you for some reason have a class definition with no content, put in the pass statement to avoid getting an error.
class EmptyClass:
pass