Skip to content

Python Classes And Object Orientated Design

Published On:
Feb 11, 2019
Last Updated:
Mar 25, 2019

Since Python v3.3, you can use both the @staticmethod and @abstractmethod decorators on the same class function (and the @abstractstaticmethod decorator has been depreciated).

import abc
class MyClass:
@staticmethod
@abstractmethod
def my_func():
pass

Checking If A Class Is A Subclass Of Another

You can check if one class is a sub-class of another with the issublass() function:

class ParentClass:
pass
class ChildClass(ParentClass):
pass
class StandaloneClass:
pass
print(issubclass(ChildClass, ParentClass))
# stdout: True
print(issubclass(StandaloneClass, ParentClass))
# stdout: False
# Works with variables which are assigned to a class too
my_class = ChildClass
print(issubclass(my_class, ParentClass))
# stdout: True

Class Variables

In Python, classes can be assigned variables, either statically or dynamically. The important difference between assigning variable to A class and assigning variables to an INSTANCE of a class is that class variables are shared between all variables/instances of that class, while instance variables are unique to that particular instance of the class.

class TestClass:
pass
# Create two class variables (not here that we are NOT)
# creating instances, there are no brackets () at the end)
test_class_1 = TestClass
test_class_2 = TestClass
# Assign a value to a class variable
test_class_1.my_var = 2
# The other class variable now has this value too!
print(test_class_2.my_var)
# stdout: 2
test_class_2.my_var = 3
# The original classes variable has changed, as the variable is shared
# between all identical class objects
print(test_class_1.my_var)
# stdout: 3