Разница, если симметрия нарушается: в одну сторону дуга есть, в другую нет.
def __init__(self):
self.math = Math()
Стрелка от "заместителя" к "реальному субъекту" называется "зависимость".
class A:
def show(self):
print("a")
class B:
def show(self,s):
s.show()
a = A()
b = B()
b.show(a)
class A:
def show(self):
print("a")
class B:
def show(self,s):
s.show()
b = B()
b.show(A())
Если бы он был полезным, то о нем бы писали в "основах". А также писали бы с его использованием
def f():
pass
print(f.__name__) #f
def f():
pass
f.a=1
print(f.__dict__)#{"a":1}
вроде все сходиться)