Python 3.6
I just found myself programming this type of inheritance structure (below). Where a sub class is calling methods and attributes of an object a parent has. 
In my use case I'm placing code in class A that would otherwise be ugly in class B.
Almost like a reverse inheritance call or something, which doesn't seem like a good idea... (Pycharm doesn't seem to like it)
Can someone please explain what is best practice in this scenario?
Thanks!
class A(object):
    def call_class_c_method(self):
        self.class_c.do_something(self)
class B(A):
    def __init__(self, class_c):
        self.class_c = class_c
        self.begin_task()
    def begin_task(self):
        self.call_class_c_method()
class C(object):
    def do_something(self):
        print("I'm doing something super() useful")
a = A
c = C
b = B(c)
outputs:
I'm doing something super() useful