Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Центр помощи
  • » Создание класса + Создание метода, который возвращает атрибуты вашего обьекта в виде строки [RSS Feed]

#1 Дек. 18, 2021 18:28:49

Rikin
Зарегистрирован: 2020-11-14
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание класса + Создание метода, который возвращает атрибуты вашего обьекта в виде строки

Здравствуйте,
решаю задачу:

Требуется создать класс любых геометрических фигур, где на выход мы получаем характеристики фигуры. Каждый экземпляр должен иметь атрибуты, которые зависят от выбранной фигуры. Например, для прямоугольника это будут аргументы a, b, width и height.

Кроме того вы должны иметь возможность передавать эти атрибуты при создании объекта класса.

Создайте метод, который возвращает атрибуты вашей фигуры в виде строки.

Для реализации используйте str. К примеру, для объекта «прямоугольник» со значениями атрибутов a = 5, b = 10, width = 50, height = 100, метод должен вернуть строку Rectangle(5, 10, 50, 100).


но пока к сожалению команда print(recht_1.atributs_as_string) не распечатывает строку Rectangle(5, 10, 50, 100) как требуется в задании.
Я если честно не совсем понял почему у Rectangle в скобках четыре аргумента/атрибута (а не два как у прямоугольника). Может быть имеется ввиду два прямоугольника: один (a, b), другой(width, height)…. Сейчас уточнить это я не могу, но исхожу из того что в итоге должна распечататься строка Rectangle(5, 10, 50, 100) с четырьмя атрибутами… - раз “старшина” так приказал.

Ниже - моя попытка решить задачу:

 # Создайте класс любых геометрических фигур, где на выход мы получаем характеристики фигуры. Каждый экземпляр должен иметь атрибуты, которые зависят от выбранной фигуры. Например, для прямоугольника это будут аргументы x, y, width и height.
class Rechtangle:
    def __init__(self, a, b, width, height):
        self.a = a
        self.b = b
        self.width = width
        self.height = height
    # Создайте метод, который возвращает атрибуты вашей фигуры в виде строки.
    def atributs_as_string(self):
        return str(self.a, self.b, self.width, self.height)             # ???????
# Кроме того вы должны иметь возможность передавать эти атрибуты при создании объекта класса.
recht_1 = Rechtangle(5, 10, 50, 100)      # создаём обьект   recht_1
print(recht_1.atributs_as_string)

Прошу подсказки, помощи по решению.

Отредактировано Rikin (Дек. 18, 2021 18:34:57)

Офлайн

#2 Дек. 18, 2021 21:02:54

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1394
Репутация: +  124  -
Профиль   Отправить e-mail  

Создание класса + Создание метода, который возвращает атрибуты вашего обьекта в виде строки

 class Rectangle:
    def __init__(self, a, b, width, height):
        self.a = a
        self.b = b
        self.width = width
        self.height = height
    def __str__(self):
        return 'Rectangle({}, {}, {}, {})'.format(self.a, self.b, self.width, self.height)
r = Rectangle(5, 10, 50, 100)
print(r)

первые два числа, координаты точки от которого будет строится прямоугольник

Офлайн

#3 Дек. 19, 2021 02:21:01

Rikin
Зарегистрирован: 2020-11-14
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание класса + Создание метода, который возвращает атрибуты вашего обьекта в виде строки

Спасибо. Это Вы конечно мастерски завернули (а я еще не волшебник, а только учусь и таких вещей не проходил).
Поэтому вопросы:


1. def __str__(self):

Функция (или метод?) __str__(self) - это стандартная функция питона, которая как стандартный инструмент предназначена по ее названию трансформировать то что внутри нее в str-формат? Или же мы ее __str__(self) таковой конструируем?




2. return ‘Rectangle({}, {}, {}, {})’.format(self.a, self.b, self.width, self.height)

Если можно, прошу пояснить подробнее по вакантным меcтам которые держат ({}, {}, {}, {}): это понятно что они резервируют места для четырёх аргументов, но Question:

то что в фигурных скобках - стандартная запись для функции __str__(self)
или для метода .format(self.a, self.b, self.width, self.height)
или:
мы именно конструируем функцию (а не взяли готовую), трансформирующую то что имеем в формат строки?

И , если можно: про метод .format в данной конструкции? - потому как совсем ново…


————– —————— ———
Нельзя ли (пожалуйста!) написать код поближе к моему стилю: без __str__ и без метода
.format(….) ?

Отредактировано Rikin (Дек. 19, 2021 02:40:39)

Офлайн

#4 Дек. 19, 2021 21:45:24

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10019
Репутация: +  857  -
Профиль   Отправить e-mail  

Создание класса + Создание метода, который возвращает атрибуты вашего обьекта в виде строки

Rikin
Требуется создать класс любых геометрических фигур, где на выход мы получаем характеристики фигуры. Каждый экземпляр должен иметь атрибуты, которые зависят от выбранной фигуры. Например, для прямоугольника это будут аргументы a, b, width и height.

Кроме того вы должны иметь возможность передавать эти атрибуты при создании объекта класса.

Создайте метод, который возвращает атрибуты вашей фигуры в виде строки.

Для реализации используйте str. К примеру, для объекта «прямоугольник» со значениями атрибутов a = 5, b = 10, width = 50, height = 100, метод должен вернуть строку Rectangle(5, 10, 50, 100).

  
>>> class Shape:
...     def to_string(self):
...         name = self.__class__.__name__
...         attrs = self.__dict__.values()
...         return name + '(' + ', '.join(map(str, attrs)) + ')'
... 
>>> class Rectangle(Shape):
...     def __init__(self, x, y, width, height):
...         self.x = x
...         self.y = y
...         self.width = width
...         self.height = height
... 
>>> class Triangle2D(Shape):
...     def __init__(self, x1, y1, x2, y2, x3, y3):
...         self.x1 = x1
...         self.y1 = y1
...         self.x2 = x2
...         self.y2 = y2
...         self.x3 = x3
...         self.y3 = y3
... 
>>> class Circle(Shape):
...     def __init__(self, x, y, r):
...         self.x = x
...         self.y = y
...         self.r = r
... 
>>> class Triangle3D(Shape):
...     def __init__(self, x1, y1, z1, x2, y2, z2, x3, y3, z3):
...         self.x1 = x1
...         self.y1 = y1
...         self.z1 = z1
...         self.x2 = x2
...         self.y2 = y2
...         self.z2 = z2
...         self.x3 = x3
...         self.y3 = y3
...         self.z3 = z3
... 
>>> rectangle = Rectangle(5, 10, 50, 100)
>>> rectangle.to_string()
'Rectangle(5, 10, 50, 100)'
>>> 
>>> triangle2d = Triangle2D(0, 0, 2, 2, 5, 0)
>>> triangle2d.to_string()
'Triangle2D(0, 0, 2, 2, 5, 0)'
>>> 
>>> circle = Circle(1, 1, 15)
>>> circle.to_string()
'Circle(1, 1, 15)'
>>> 
>>> triangle3d = Triangle3D(0, 0, 0, 2, 2, 0, 0, 0, 5)
>>> triangle3d.to_string()
'Triangle3D(0, 0, 0, 2, 2, 0, 0, 0, 5)'
>>>



Офлайн

#5 Дек. 21, 2021 00:48:00

Rikin
Зарегистрирован: 2020-11-14
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание класса + Создание метода, который возвращает атрибуты вашего обьекта в виде строки

py.user.next

Ну Вы волшебник! Спасибо.

Офлайн

  • Начало
  • » Центр помощи
  • » Создание класса + Создание метода, который возвращает атрибуты вашего обьекта в виде строки[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version