PYTHON

Python Classes And Object Orientated Design

Date Published:
Last Modified:

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

Related Content:

Tags:

comments powered by Disqus