Calculating area of different figures on a case by case basis
First, note that finding the area of an isosceles triangle is the same formula as finding the area of right triangle.  Both are 1/2 * base * height.  

You are mixing object oriented classes and imperative programming.  This usually happens as you are first learning about classes.  Here is are two alternate structures to your code:

First option, you can ignore classes.   The only commonality between a triangle and an octagon is that both have an area() method.   There is no common data: a triangle has no radius and an octagon has nothing but a radius.  You can make functions like triangle_area(base, height), octagon_radius(radius).  Both return areas.  Just doing this would simplify your code.

Second option, you use classes anyway.  You might do this if you expect more commonality in the near future.  For example, if this is becoming a drawing program then a Figure might be a class that "has a x,y center, current color, a move command, a draw command and an area function."  This code would have code common to all figures in class Figure and would have empty (or virtual) routines that are 'parts any subclass needs to implement to considered a Figure'.   

Here is some a code outline to ponder:

 class Figure:
     def area(self):  # return the area of this figure
         raise NotImplementedExeception('subclass must have an area() function')

 class Triangle(Figure):   # inheritence is the promise to follow the superclass API
     def __init__(self, base, height):
         super().__init__()   # this is boilerplate
         self.base, self.height = base, height

     def area(self):
         return self.base * self.height / 2

     @classmethod  # used for custom constructors
     def ask_right(cls):
        print("Это нахождение площади прямоугольного треугольника")
        a1 = float(input("Введите первый катет  "))
        b1 = float(input("Введите второй катет  "))
        return cls(a1, a2)   # return a new triangle

     @classmethod
     def ask_isosceles():
        ...

def main():
        print("Для выхода нажмите Enter")
        a = int(input("1. Площадь прямоугольного тр. \n2. Площадь равнобедренного тр. \n3. Площадь квадрата \n4. Площадь ромба  "))
        if a == 1:
            fig = Triangle.ask_right()
        elif a == 2:
            fig = Triangle.ask_isosceles()
        elif a == 3:
            fig = Octagon.ask()

        print f"Area is {fig.area()}")


In summary, using classes to organize your code makes more sense if you are doing more than just one item.   The real power comes from being able to write functions like:

def redraw(list_of_figures):
    clear_screen()
    for fig in list_of_figures:
        fig.draw()   # which might be Circle.draw(), Triangle.draw() or another subclass


and adding a new subclass, say Pentagon(Figure), without having to change the redraw() function.

Classes can be hard to get your head around; that is normal.

Keep hacking!  Keep notes.