Subclassing -- replacing functions in a class¶

One of the main interests of using classes it the possibility of rewriting parts of an object. Here we take the Simul class and replace the __init__ and the md_step functions. We still have access to the previous definitions with the use of the super() call.

In [1]:
from simul import Simul

class ModifiedSimul(Simul):
    """
     Subclassing documentation
    """
    def __init__(self, sample_time, sigma, L):
        super().__init__(sample_time, sigma, L)
        print("ModifiedSimul init")

    def md_step(self):  # m number of iterations
        print("sub md_step")
        super().md_step()  # we now call the original md_step code

simul = ModifiedSimul(L=4,sample_time=0.001, sigma=0.15)
simul.md_step()

print(simul.__doc__)  # we have replaced the __doc__ string
print(simul)
ModifiedSimul init
sub md_step
Simul::md_step

     Subclassing documentation
    
pos= [[1.00222495 1.0001973 ]
 [4.00264478 1.00227013]
 [0.99883407 3.99593497]
 [3.99921956 3.99857134]]
vel= [[ 2.22494501  0.19729537]
 [ 2.64477696  2.27012548]
 [-1.16592854 -4.06503291]
 [-0.78043509 -1.42866347]]

In [ ]: