Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/47: Рейтинг темы: голосов - 47, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 20.03.2019
Сообщений: 68

Работа с методами get и set

31.10.2019, 12:18. Показов 8805. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите с заданиями 5 и 6. Не могу понять, что от меня требуется и как это сделать соответственно. Спасибо большое.

1) Сделайте у класса из предыдущего упражнения закрытыми все его поля (код указал).
2) Добавьте методы get и set для всех полей. Поскольку полей всего 4, то должно быть 4 метода get и 4 метода set.
3) Убедитесь, что доступа к полям уже нет за пределами класса.
4) Проверьте работу методов get и set.
5) Сделайте закрытый метод printlog(), в котором с помощью функции print() выводите значение переданного параметра.
6) В методах get и set вызывайте метод printlog с параметром: «Запрошено свойство NAME» (для методов get) или «Изменено свойство NAME» (для методов set). Вместо NAME должно быть подставлено имя соответствующего свойства.

Код предыдущего задания (для первого пункта текущего задания)


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Rectangle:
x = 0
y = 0
width = 0
height = 0
def __init__(self, x = 0, y = 0, width = 0, height = 0):
self.x = x
self.y = y
self.width = width
self.height = height
def __str__(self): # 1)
return "Прямоугольник с координатами (" + str(self.x) + ";" + str(self.y) + ") Шириной " + str(self.width) + " и Высотой " + str(self.height)
def square(self, r): # 2)
return "Площадь прямоугольника: " + str(r.width * r.height) + " хз чего :)"
def perimeter(self, r): # 3)
return "Периметр прямоугольника: " + str((r.width + r.height)*2) + " локтей :)"
 
r = Rectangle(0, 0, 200, 100)
print(r) # 1)
# Прямоугольник с координатами (0;0) Шириной 200 и Высотой 100
 
# для площади и периметра можно перед принтом r = Rectangle(), т е без координат
print(r.square(Rectangle(width=200, height=100))) # 2)
# Площадь прямоугольника: 20000 хз чего :)
print(r.perimeter(Rectangle(width=200, height=100))) # 3)
# Периметр прямоугольника: 600 локтей :)

Код текущего задания:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
class Rectangle:
__x = 0
__y = 0
__width = 0
__height = 0
def __init__(self, x, y, width, height):
self.__x = x
self.__y = y
self.__width = width
self.__height = height
def getX(self):
return self.__x
def getY(self):
return self.__y
def getWIDTH(self):
return self.__width
def getHEIGHT(self):
return self.__height
def setX(self, x):
self.__x = x
def setY(self, y):
self.__y = y
def setWIDTH(self, width):
self.__width = width
def setHEIGHT(self, height):
self.__height = height
# def __printlog(self): # начало 5-го задания
 
r = Rectangle(0, 0, 200, 100)
 
r.setX(1)
r.setY(10)
r.setWIDTH(300)
r.setHEIGHT(250)
 
print(r.getX())
print(r.getY())
print(r.getWIDTH())
print(r.getHEIGHT())
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.10.2019, 12:18
Ответы с готовыми решениями:

Класс на c++, с методами get, set, show
12.Word: Слово, Номера страниц, на которых слово встречается (от 1 до 10), Число страниц. Создать массив объектов. Вывести: а) слова,...

Создать класс на c++, с методами get, set, show
Класс на c++, с методами get, set, show Задание: Слово, Номера страниц, на которых слово встречается (от 1 до 10), Число страниц. ...

Для чего нужны set.keys(), set.values(), set.entries() ?
Для чего нужны set.keys(), set.values(), set.entries() ? Не могу понять документацию. Приведите примеры.

3
Эксперт Python
 Аватар для dondublon
4651 / 2071 / 366
Регистрация: 17.03.2012
Сообщений: 10,181
Записей в блоге: 6
31.10.2019, 13:07
Bigthanks, а что ж у вас код-то без отступов? Нечитаемо ведь.
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
31.10.2019, 13:50
Лучший ответ Сообщение было отмечено Bigthanks как решение

Решение

Bigthanks,
Кликните здесь для просмотра всего текста

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# -*- coding: utf-8 -*-
 
class Rectangle:
 
    def __init__(self, x:int, y:int, width:int, height:int):
        self.__x = x
        self.__y = y
        self.__width = width
        self.__height = height
 
    def getX(self)->int:
        self.__printlog("Запрошено свойство 'x'")
        return self.__x
 
    def setX(self, x:int):
        self.__printlog("Изменено свойство 'x'")
        self.__x = x
 
    def getY(self)->int:
        self.__printlog("Запрошено свойство 'y'")
        return self.__y
 
    def setY(self, y:int):
        self.__printlog("Изменено свойство 'y'")
        self.__y = y
 
    def getWidth(self)->int:
        self.__printlog("Запрошено свойство 'width'")
        return self.__width
 
    def setWidth(self, width:int):
        self.__printlog("Изменено свойство 'width'")
        self.__width = width
 
    def getHeight(self)->int:
        self.__printlog("Запрошено свойство 'height'")
        return self.__height
 
    def setHeight(self, height:int):
        self.__printlog("Изменено свойство 'height'")
        self.__height = height
 
    def __printlog(self, message:str): print(message)
 
r = Rectangle(0, 0, 200, 100)
 
r.setX(1)
r.setY(10)
r.setWidth(300)
r.setHeight(250)
 
print(r.getX())
print(r.getY())
print(r.getWidth())
print(r.getHeight())
2
 Аватар для GmDio
6 / 5 / 1
Регистрация: 06.06.2022
Сообщений: 68
09.06.2022, 17:06
Лучший ответ Сообщение было отмечено Bigthanks как решение

Решение

1) Сделайте у класса из предыдущего упражнения закрытыми все его поля (код указал).
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Rectangle:
    __x = 0
    __y = 0
    __width = 0
    __height = 0
 
    def __init__(self, x, y, width, height):
        self.__x = x
        self.__y = y
        self.__width = width
        self.__height = height
 
    def area(self):
        return self.__width * self.__height
 
    def perimetr(self):
        return (self.__width + self.__height) * 2
 
    def __str__(self):
        return "Прямоугольник с координатами (" + str(self.__x) + ";" + str(self.__y) + ") шириной " + str(
            self.__width) + " и высотой " + str(self.__height)
2) Добавьте методы get и set для всех полей. Поскольку полей всего 4, то должно быть 4 метода get и 4 метода set.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    def getx(self):
        return self.__x
 
    def gety(self):
        return self.__y
 
    def getwidth(self):
        return self.__width
 
    def getheight(self):
        return self.__height
 
    def setx(self, x):
        self.__x = x
 
    def sety(self, y):
        self.__y = y
 
    def setwidth(self, width):
        self.__width = width
 
    def setheight(self, height):
        self.__height = height
3) Убедитесь, что доступа к полям уже нет за пределами класса.
Python
1
2
3
4
5
6
7
8
9
10
rect = Rectangle(10, 15, 300, 200)
rect.x = 20
rect.y = 30
rect.width = 600
rect.height = 400
 
print(rect.getx())
print(rect.gety())
print(rect.getwidth())
print(rect.getheight())
4) Проверьте работу методов get и set.
Python
1
2
3
4
5
6
7
8
9
rect.setx(0)
rect.sety(0)
rect.setwidth(640)
rect.setheight(480)
 
print(rect.getx())
print(rect.gety())
print(rect.getwidth())
print(rect.getheight())
5) Сделайте закрытый метод printlog(), в котором с помощью функции print() выводите значение переданного параметра.
Python
1
2
    def __printlog(self, msg):
        print(str(msg))
6) В методах get и set вызывайте метод printlog с параметром: «Запрошено свойство NAME» (для методов get) или «Изменено свойство NAME» (для методов set). Вместо NAME должно быть подставлено имя соответствующего свойства.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
    def getx(self):
        self.__printlog("Запрошено свойство 'x'")
        return self.__x
 
    def gety(self):
        self.__printlog("Запрошено свойство 'y'")
        return self.__y
 
    def getwidth(self):
        self.__printlog("Запрошено свойство 'width'")
        return self.__width
 
    def getheight(self):
        self.__printlog("Запрошено свойство 'height'")
        return self.__height
 
    def setx(self, x):
        self.__printlog("Изменено свойство 'x'")
        self.__x = x
 
    def sety(self, y):
        self.__printlog("Изменено свойство 'y'")
        self.__y = y
 
    def setwidth(self, width):
        self.__printlog("Изменено свойство 'width'")
        self.__width = width
 
    def setheight(self, height):
        self.__printlog("Изменено свойство 'height'")
        self.__height = height
P.S.: Я сам только учусь, поэтому не могу гарантировать правильность, итоговый код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
class Rectangle:
    __x = 0
    __y = 0
    __width = 0
    __height = 0
 
    def __init__(self, x, y, width, height):
        self.__x = x
        self.__y = y
        self.__width = width
        self.__height = height
 
    def area(self):
        return self.__width * self.__height
 
    def perimetr(self):
        return (self.__width + self.__height) * 2
 
    def getx(self):
        self.__printlog("Запрошено свойство 'x'")
        return self.__x
 
    def gety(self):
        self.__printlog("Запрошено свойство 'y'")
        return self.__y
 
    def getwidth(self):
        self.__printlog("Запрошено свойство 'width'")
        return self.__width
 
    def getheight(self):
        self.__printlog("Запрошено свойство 'height'")
        return self.__height
 
    def setx(self, x):
        self.__printlog("Изменено свойство 'x'")
        self.__x = x
 
    def sety(self, y):
        self.__printlog("Изменено свойство 'y'")
        self.__y = y
 
    def setwidth(self, width):
        self.__printlog("Изменено свойство 'width'")
        self.__width = width
 
    def setheight(self, height):
        self.__printlog("Изменено свойство 'height'")
        self.__height = height
 
    def __printlog(self, msg):
        print(str(msg))
 
    def __str__(self):
        return "Прямоугольник с координатами (" + str(self.__x) + ";" + str(self.__y) + ") шириной " + str(
            self.__width) + " и высотой " + str(self.__height)
 
 
rect = Rectangle(10, 15, 300, 200)
rect.x = 20
rect.y = 30
rect.width = 600
rect.height = 400
 
print(rect.getx())
print(rect.gety())
print(rect.getwidth())
print(rect.getheight())
 
rect.setx(0)
rect.sety(0)
rect.setwidth(640)
rect.setheight(480)
 
print(rect.getx())
print(rect.gety())
print(rect.getwidth())
print(rect.getheight())
Если кто-то проверит - спасибо!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.06.2022, 17:06
Помогаю со студенческими работами здесь

Работа с методами
С# Написать метод, вычисляющий значение x в квадрате + у в квадрате. С его помощью определить, с какой парой чисел (а, b) или (c, d)...

Работа с методами!
Доброго времени суток уважаемые эрудиты! Вопрос такой: -У меня есть метод который принимает данные из управляющего класса (например...

Работа с методами
Здравствуйте! Помогите, пожалуйста, с небольшой частью задания: Создать класс CelestialBody (небесное тело), включающий в себя...

Работа с методами
Не получается разобраться с заданием, прошу помощи: -Написать static void power(double x, int n), который выпишет таблицу степеней х от...

Работа с методами
Суть в том, что вывод происходит внутри метода с рекурсией, но как сделать, так что-бы вывод происходил в основном методе, а все расчеты...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru