Rot and polyalphabetic ciphers in Python 2.7
rotInt, letters, length are defined in class. Use it.

Instead of for loop use map. 

def rot(self, string, letters=None, rotInt=None):
    if letters is None:
        letters = self.letters
    length = len(letters)
    if rotInt is None:
        rotInt = self.rotInt
    return ''.join(map(lambda letter: letter in letters and letters[(letters.index(letter) + rotInt) % length] or letter, string))


and or

It's like bool ? a : b in C / C++. It's equivalent to:

if bool:
    return a
else:
    return b