Python: os atributos de classe são equivalentes às variáveis locais quando dentro de um método?
Em python, eu sei que procurar uma variável com escopo local é significativamente mais rápida do que procurar uma variável com escopo global. Assim:
a = 4
def function()
for x in range(10000):
<do something with 'a'>
É mais lento que
def function()
a = 4
for x in range(10000):
<do something with 'a'>
Então, quando olho para uma definição de classe, com um atributo e um 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>
O uso de self.attribute é mais parecido com minha primeira ou segunda função? E se eu subclasses Classy e tentar acessar o attribute2 de um método na minha subclasse?