Python: ¿Son los atributos de clase equivalentes a las variables locales cuando están dentro de un método?

En python, sé que buscar una variable de ámbito local es significativamente más rápido que buscar una variable de ámbito global. Entonces:

a = 4
def function()
    for x in range(10000):
        <do something with 'a'>

Es más lento que

def function()
    a = 4
    for x in range(10000):
        <do something with 'a'>

Entonces, cuando miro una definición de clase, con un atributo y un método:

class Classy(object):
    def __init__(self, attribute1):
        self.attribute1 = attribute1
        self.attribute2 = 4
    def method(self):
        for x in range(10000):
            <do something with self.attribute1 and self.attribute2>

¿Mi uso de self.attribute se parece más a mi primera o segunda función? ¿Qué pasa si subclase Classy e intento acceder a attribute2 desde un método en mi subclase?

Respuestas a la pregunta(1)

Su respuesta a la pregunta