Eujene
@Eujene
Айти или не айти?

Как лучше реализовать наследование?

Здравствуйте.

Разбираюсь с наследованием в ООП. Написал код и чувствую, что метод наследования можно переписать грамотнее. Но знаний не хватает. Помогите, пожалуйста.
З.Ы. Можно ли в наследуемом классе указывать не все атрибуты суперкласса?

import math

class Figure():
    '''определение параметров фигуры'''

    def __init__(self, radius, lenght, height):
        self.radius = radius
        self.lenght = lenght
        self.height = height

class Circle(Figure):
    '''рассчет параметров круга'''
    def __init__(self, radius, lenght=0):
        super().__init__(radius, lenght)
        self.pi = math.pi

    def areaCircle(self):
        """площадь круга"""
        area = self.pi * self.radius ** 2
        print(area)
    def lenghtCircle(self):
        """длина окружности"""
        lenght = 2 * self.pi* self.radius
        print(lenght)


class Rectangle(Figure):
    """рассчет параметров прямоугольника"""
    def __init__(self, lenght, height, radius = 0):
        super().__init__(radius,lenght, height)

    def areaRectangle(self):
        """площадь прямоугольника"""
        area = self.lenght * self.height
        print(area)

    def perimeterRectangle(self):
        """периметр прямоугольника"""
        perimeter = 2* (self.height+self.lenght)
        print(perimeter)

my_rectangle = Rectangle(3,4)
my_rectangle.perimeterRectangle()
  • Вопрос задан
  • 129 просмотров
Пригласить эксперта
Ответы на вопрос 1
@deliro
Хреновое наследование. Читай SOLID, особенно тот пункт, который L
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы