Q: Initializing an extended class with an instance when the parent class can't take itself as argument for the constructor Ok. I am trying to extend a data structure class by making a subclass. The use case is that the program will already have an instance of the parent class and pass that to the constructor of the subclass. In other words, I have an instance of a parent class, A, and I want to feed it into an extended class constructor to get an instance of the extended class, B. 
class child(Parent):
    def __init__ (self, dataInstance=None):
        super(child, self).__init__(dataInstance)

child.someparentmethod() # YES! 

So if the Parent class could take an instance of itself in its constructor this would work (actually I'm dealing with multiple classes where some do and some do not). The hack-y thing I want to avoid is just passing the parent data structure as a property of another class: 
class notChild():
    def __init__ (self, dataInstance=None):
        self.data = dataInstance

notChild.data.someparentmethod()  # yuck.

I'm relatively new to OOP in python and I hope I'm overlooking something obvious. Thanks!

A: Ok. This is the solution I went with, which is specific to the implementation and I'd love to hear if there is a more general/pythonic way to do this:
class child(pandas.Panel4D):
    def __init__ (self, d=None):
        if isinstance(d, pandas.Panel4D):
            d = d._data
            super(child, self).__init__(d)
        else:
            super(child, self).__init__(d)

Essentially, if the child constructor is fed a parent instance, it accesses it's underlying data which is a class that the parent constructor can ingest.
