Я сейчас напишу очевидные вещи, но если я в чём-то буду не прав, поправьте меня. Всегда замечал, что при редактировании классов в моём коде слишком часто используется .self, а когда узнал, что обращение к атрибутам/методам класса производится как обращение к словарю по ключу-имени атрибута/метода, решил максимально возможно сократить использование этой медленной конструкции. 
 Например, такой код 
 Code
 
 from numpy import zeros 
 from random import random 
 class MyClass(): 
      
     def __init__(self): 
          
         self.count = 10 
          
         self.values = zeros((self.count, self.count), float) 
          
         for i in range(self.count): 
             for j in range(self.count): 
                 self.values[i][j] = random() 
      
     def edit(self): 
          
         for i in range(self.count): 
             for j in range(self.count): 
                 if i==j: self.values[i][j] = 0 
                 else: self.values[i][j] = 1 
 
 следует исправить так: 
 Code
 
 from numpy import zeros 
 from random import random 
 class MyClass(): 
      
     def __init__(self): 
          
         count = self.count = 3 
         values = zeros((count, count), float) 
          
         for i in range(count): 
             for j in range(count): 
                 values[i][j] = random() 
          
         self.values = values 
      
     def edit(self): 
          
         values = self.values 
         count = self.count  
          
         for i in range(count): 
             for j in range(count): 
                 if i==j: values[i][j] = 0 
                 else: values[i][j] = 1