Prime number generator in Python
A few quick notes:

In case of square_generator() and next_fermat() you have unnecessary...

while True:


Anytime all paths through the loop encounter a return or break, the loop will never loop.

This:

 return bool(num % 4 == 1)


can be:

 return num % 4 == 1


since the == will always produce a bool.     

I would code:

def next_fermatf(self):
    true, num = self.next_fermat()
    if true:
        print("%d\t\t%f" % (num, (self.fermat_number_true / (self.fermat_number_false + self.fermat_number_true)) * 100))
    else:
        print("%d\tX\t%f" % (num, (self.fermat_number_true / (self.fermat_number_false + self.fermat_number_true)) * 100))


more like:

def next_fermatf(self):
    is_next_fermat, num = self.next_fermat()

    msg = "" if is_next_fermat else "X"        
    print("%d\t%s\t%.1f%%" % (num, msg, 
        100.0 * self.fermat_number_true /
        (self.fermat_number_false + self.fermat_number_true))))



Changing true to is_next_fermat allows if is_next_fermat to be read, while if true reads more awkwardly.
Eliminate common code
Keep the code below the pep8 recommended 80 columns
Format the % with fixed decimal and show the units.