import sys import gzip class UnusedClass(): def __init__(self,compressor): self.compressor = compressor pass def write(self, data): print("UnusedClass.write") class Compressor(): def __init__(self): print("Compressor.__init__") self.gz = gzip.GzipFile( 'debug.txt.gz', mode='wb') # COMMENT THIS OUT to make it work self.unused = gzip.GzipFile( fileobj=UnusedClass(self), mode='wb') # This creates an extra reference to this class def compressToFile(self,data): print("Compressor.compressToFile") self.gz.write(data) contents = b"1234567890" compressor = Compressor() compressor.compressToFile(contents) #sys.exit(0) # This breaks it in Py3