In object oriented programming, classes are used as a blueprint to define objects in an application. Classes are a way to organize code, provide the ability to easily extend functionality and allow for reuse.
In Python, a class is defined as follows:
class BaseClass:
# constructor
def __init__(self, param1):
self.param1 = param1
self._aprotectedvariable = 1
self.__aprivatevariable = 2
def set_param1(self, param1):
self.param1 = param1
def get_param1(self):
return self.param1
def who_am_i(self):
print(‘I am a Base Class’)
def _a_protected_method(self):
print(‘I am a protected method’)
def __a_private_method(self):
print(‘I am a private method’)
private_method = __a_private_method
Class names are camel cased, which means each word starts with a capital letter and there are no underscores.
Variable/Method Scope:
Protected variables and methods are defined by adding one underscore to the beginning of the variable or method name. Protected variables and methods are still accessible outside of the class. However, a best practice is not to access either one and to use caution if it really needs to be done.
Private variables and methods are defined by adding two underscores to the beginning of the variable name. Private variable and method names are mangled, so they are not as easy to access outside of the class. It can still be done by calling a variable as _class__variable, ex: _BaseClass__aprivatevariable. This should never really be done though.
A class may also provide access to private or protected members by assigning a public variable to them, which is what the line:
private_method = __a_private_method
is doing.
Inheritance:
A child class can be created as follows:
class ChildClassA(BaseClass):
def __init__(self, parama, paramb):
super().__init__(parama)
self.param2 = paramb
def who_am_i(self):
print(‘I am a Child Class A’)
The who_am_i method demonstrates how a child class can override a method in a parent class.
Example Usage:
A class is instantiated as follows:
base_class = BaseClass(‘abc’)
base_class.who_am_i()
base_class.private_method()
base_class._BaseClass__a_private_method()
print(base_class._BaseClass__aprivatevariable)
child_class_a = ChildClassA(‘123’, ‘456’)
child_class_a.who_am_i()
Leave a Reply
You must be logged in to post a comment.