Lets say I have a class. It holds other classes in it.
ex

class Test:
    def__init__(self, name):
        self.name = name
    def getname(self):
        print(self.name)

class Holder:
    def __init__(self, tests):
        self.tests = tests
    def getnames(self):
        for i in self.tests:
            print( i.getname())

so lets say I pickle an instance of Holder with 3 instances of Test in it. If I unpickle later, are the instances of Test pickled too? And can I put them back into variables after?

Pickle does work recursively, so 'Yes'.