From 982c060035fdd6bc3744d8c729a7533dfd7be491 Mon Sep 17 00:00:00 2001 From: Ksenia Date: Sun, 14 Dec 2025 18:29:36 +0300 Subject: [PATCH] report --- TEMA9/Mod3.py | 10 ++ TEMA9/SAU.py | 36 ++++ TEMA9/photo1.png | Bin 0 -> 35993 bytes TEMA9/report.md | 448 +++++++++++++++++++++++++++++++++++++++++++++++ TEMA9/report.py | 117 +++++++++++++ 5 files changed, 611 insertions(+) create mode 100644 TEMA9/Mod3.py create mode 100644 TEMA9/SAU.py create mode 100644 TEMA9/photo1.png create mode 100644 TEMA9/report.md create mode 100644 TEMA9/report.py diff --git a/TEMA9/Mod3.py b/TEMA9/Mod3.py new file mode 100644 index 0000000..03939c4 --- /dev/null +++ b/TEMA9/Mod3.py @@ -0,0 +1,10 @@ +class Class1: #Объявление класса Class1 в модуле + def zad_zn(self,znach): # 1 Метод класса + self.data=znach # self - ссылка на экземпляр класса Class1 + def otobrazh(self): # 2 Метод класса + print(self.data)#Отображение данных экземпляра +class Class2(Class1): #Class2 - наследник класса Class1 + def otobrazh(self): # Метод класса Class2 + print('значение=',self.data)#Отображение данных экземпляра +def otobrazh(objekt): #Объявление самостоятельной функции + print('значение объекта=',objekt) \ No newline at end of file diff --git a/TEMA9/SAU.py b/TEMA9/SAU.py new file mode 100644 index 0000000..39c2e26 --- /dev/null +++ b/TEMA9/SAU.py @@ -0,0 +1,36 @@ +class SAU: + def __init__(self, zn_param): + self.param = zn_param + self.ypr = [0, 0] + + def zdn_zn(self, upr): + self.x = upr + + def model(self): + def inerz(x, T, yy): + return (x + T * yy) / (T + 1) + + y0 = self.x - self.ypr[1] * self.param[3] # Обр.связь с усилителем 2 + y1 = self.param[0] * y0 # Усилитель1 + y2 = inerz(y1, self.param[1], self.ypr[0]) # Инерционное звено1 + y3 = inerz(y2, self.param[2], self.ypr[1]) # Инерционное звено2 + self.ypr[0] = y2 + self.ypr[1] = y3 + + def otobraz(self): + print('y=', self.ypr[1]) + +###main_SAU +prm=[2.5,4,1.3,0.8] #Параметры модели: коэф.усиления, 2 пост.времени, обратная связь +from SAU import * +xx=[0]+[1]*20 #Входной сигнал – «ступенька» +SAUe=SAU(prm) # Создаём экземпляр класса +yt=[] +for xt in xx: # Прохождение входного сигнала + SAUe.zdn_zn(xt) + SAUe.model() + SAUe.otobraz() + yt.append(SAUe.ypr[1]) +import pylab +pylab.plot(yt) +pylab.show() \ No newline at end of file diff --git a/TEMA9/photo1.png b/TEMA9/photo1.png new file mode 100644 index 0000000000000000000000000000000000000000..b703a80e155d1cf7cacdd6567b992c5fd3702613 GIT binary patch literal 35993 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�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 S7PM+KF%<%s)*}*rPyQdgbh)7b literal 0 HcmV?d00001 diff --git a/TEMA9/report.md b/TEMA9/report.md new file mode 100644 index 0000000..ff8c25b --- /dev/null +++ b/TEMA9/report.md @@ -0,0 +1,448 @@ +# Отчет по Теме 9 + +Зеленкина Ксения, А-02-23 + +## 1. Начало работы. +Запустила интерактивную оболочку IDLE и открыла окно текстового редактора, куда буду фиксировать мои дальнейшие действия. +Начинём сеанс работы с IDLE со следующих инструкций: + +```py +import os,sys,imp #Импорт трёх важных вспомогательных модулей +os.chdir('<Путь к рабочему каталогу>') #Делаем рабочий каталог текущим +os.getcwd() #Контролируем корректность установки текущего каталога +``` + +_В новых версиях Python вместо модуля imp используется importlib._ + +## 2. Создание классов и их наследников +#### 2.1. Создание автономного класса + +Создадим класс с именем __Class1__, содержащий 2 функции, реализующие его методы: +_Код:_ +```py +class Class1: #Объявление класса + def zad_zn(self,znach): #Метод 1 класса1 – задание значения data + self.data=znach # self - ссылка на экземпляр класса + def otobrazh(self): # Метод 2 класса1 + print(self.data)#Отображение данных экземпляра класса +``` + +Создадим 2 экземпляра этого класса: +_Код:_ +```py +class Class1: #Объявление класса +z1=Class1() #Создаём 1-й экземпляр класса +z2=Class1() #Создаём 2-й экземпляр класса +``` +С помощью первого метода зададим разные значения атрибута у двух экземпляров: +_Код:_ +```py +z1.zad_zn('экз.класса 1') # Обращение к методу класса у 1-го экз. +z2.zad_zn(-632.453) # Обращение к методу класса у 2-го экз. +``` + +Для контроля отобразим его значения с помощью второго метода. +_Код:_ +```py +z1.otobrazh() +z2.otobrazh() +``` + +_Вывод:_ +```py +экз.класса 1 +-632.453 +``` + +Изменим значение атрибута у первого экземпляра и отобразите его: +_Код:_ +```py +z1.data='Новое значение атрибута у экз.1' +z1.otobrazh() +``` + +_Вывод:_ +```py +Новое значение атрибута у экз.1 +``` + +#### 2.2. Создание класса-наследника +В объявлении класса после его имени в скобках перечисляются его «родительские классы» +_Код:_ +```py +class Class2(Class1): #Class2 - наследник класса Class1 + def otobrazh(self): # Метод класса Class2 – переопределяет метод родителя + print('значение=',self.data)#Отображение данных экземпляра +``` + +Создали экземпляр второго класса +_Код:_ +```py +z3=Class2() +print(dir(z3)) +``` + +_Вывод:_ +```py +['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'otobrazh', 'zad_zn'] +``` + +Задали у него значение данного data (унаследовано от Class1) +_Код:_ +```py +z3.zad_zn('Совсем новое') +z3.otobrazh() +z1.otobrazh() +``` + +_Вывод:_ +```py +значение= Совсем новое +Новое значение атрибута у экз.1 +``` + +Удалим экземпляры классов инструкцией +_Код:_ +```py +del z1,z2,z3 +``` + +## 3. Использование классов, содержащихся в модулях +Создадим модуль с именем Mod3, в который запишите следующее. +Содержимое Mod3: +_Код:_ +```py +class Class1: #Объявление класса Class1 в модуле + def zad_zn(self,znach): # 1 Метод класса + self.data=znach # self - ссылка на экземпляр класса Class1 + def otobrazh(self): # 2 Метод класса + print(self.data)#Отображение данных экземпляра +class Class2(Class1): #Class2 - наследник класса Class1 + def otobrazh(self): # Метод класса Class2 + print('значение=',self.data)#Отображение данных экземпляра +def otobrazh(objekt): #Объявление самостоятельной функции + print('значение объекта=',objekt) +``` + +Импортировали первый класс из модуля +_Код:_ +```py +from Mod3 import Class1 # Частичный импорт содержимого модуля +z4 = Class1() +z4.otobrazh() +``` +_Вывод:_ +```py + File "C:\Users\user\OneDrive\Documents\ZelenkinaKs\python-labs\TEMA9\Mod3.py", line 5, in otobrazh + print(self.data)#Отображение данных экземпляра + ^^^^^^^^^ +AttributeError: 'Class1' object has no attribute 'data' +``` +_Вывод:_ Ошибка возникает потому, что атрибут __data__ еще не был создан для объекта __z4__. + +А теперь попробуйте сделать так: +_Код:_ +```py +from Mod3 import Class1 +z4=Class1() +z4.data='значение данного data у экз.4' +z4.otobrazh() +``` + +_Вывод:_ +```py +значение данного data у экз.4 +``` + +Удалим экземпляр __z4__ и импортируем модуль +_Код:_ +```py +del z4 +import Mod3 +``` + +Создали экземпляр класса теперь инструкцией +_Код:_ +```py +z4=Mod3.Class2() +z4.zad_zn('Класс из модуля') +z4.otobrazh() +Mod3.otobrazh('Объект') +``` + + +_Вывод:_ +```py +значение= Класс из модуля +значение объекта= Объект +``` +_Вывод:_ Вызывается самостоятельная функция из модуля, а не метод класса + +## 4. Использование специальных методов. +Имена специальных методов предваряются одним или двумя подчерками и имеют вид: <имя специального метода> Для примера создали класс, содержащий два специальных метода +_Код:_ +```py +class Class3(Class2): #Наследник класса Class2, а через него – и класса Class1 + def __init__(self,znach): #Конструктор-вызывается при создании нового экземпляра класса + self.data=znach + def __add__(self,drug_zn): #Вызывается, когда экземпляр участвует в операции «+» + return Class3(self.data+drug_zn) + def zad_dr_zn(self,povtor): #А это - обычный метод + self.data*=povtor +``` + +Метод __add__ - это один из методов, осуществляющих так называемую «перегрузку» операторов. Для иллюстрации работы этих методов создали экземпляр класса Class3 и отобразили его: + +_Код:_ +```py +class Class3(Class2): #Наследник класса Class2, а через него – и класса Class1 + def __init__(self,znach): #Конструктор-вызывается при создании нового экземпляра класса + self.data=znach + def __add__(self,drug_zn): #Вызывается, когда экземпляр участвует в операции «+» + return Class3(self.data+drug_zn) + def zad_dr_zn(self,povtor): #А это - обычный метод + self.data*=povtor +``` +_Вывод:_ +```py +значение= abc +``` + +А теперь выполнили операцию «+» (должен сработать специальный метод add) +_Код:_ +```py +z6=z5+'def' +z6.otobrazh() +``` +_Вывод:_ +```py +значение= abcdef +``` + + +## 5. Присоединение атрибутов к классу. +_Код:_ +```py +print(dir(Class3)) +``` +_Вывод:_ +```py +['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'otobrazh', 'zad_dr_zn', 'zad_zn'] +``` + +Создали новый атрибут +_Код:_ +```py +Class3.fio='Иванов И.И.' +print(dir(Class3)) +``` +_Вывод:_ +```py +['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'fio', 'otobrazh', 'zad_dr_zn', 'zad_zn'] +``` + +Создали экземпляр +_Код:_ +```py +z7=Class3(123) +print(dir(z7)==dir(Class3)) +``` + +_Вывод:_ +```py +False +``` +Отобразим значение атрибута __fio__ у экземпляра z7. Совпадает ли оно со значением атрибута класса? (Да, совпадает) +_Код:_ +```py +print(z7.fio) +``` +_Вывод:_ +```py +Иванов И.И. +``` + +Обновили новый атрибут у созданного экземпляра: +_Код:_ +```py +z7.rozden='1987' +print( dir(z7)) +``` + +_Вывод:_ +```py +['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'data', 'fio', 'otobrazh', 'rozden', 'zad_dr_zn', 'zad_zn'] +``` + +_Код:_ +```py +print(dir(Class3)) +``` + +_Вывод:_ +```py +['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'fio', 'otobrazh', 'zad_dr_zn', 'zad_zn'] +``` + +## 6. Выявление родительских классов. +Такое выявление делается с помощью специального атрибута __bases__, например, выведите ро-дительский класс для созданного класса Class3: +_Код:_ +```py +print(Class3.__bases__) +print(Class2.__bases__) +print(Class1.__bases__) +``` + +_Вывод:_ +```py +(,) +(,) +(,) +``` + +Для получения всей цепочки наследования использовали атрибут __mro__: +_Код:_ +```py +print(Class3.__mro__) +``` + +_Вывод:_ +```py +(, , , ) +``` + +Получили всю цепочку наследования для встроенного класса ошибок «деление на ноль»: +_Код:_ +```py +print(ZeroDivisionError.__mro__) +``` +_Вывод:_ +```py +(, , , , ) +``` + +## 7. Создание свойства класса. +Свойство (property) класса – это особый атрибут класса, с которым можно производить операции чтения или задания его значения, а также удаление значения этого атрибута. +_Код:_ +```py +class Class4: + def __init__(sam,znach): + sam.__prm=znach + def chten(sam): + return sam.__prm + def zapis(sam,znch): + sam.__prm=znch + def stiran(sam): + del sam.__prm + svojstvo=property(chten,zapis,stiran) +``` + +Обратили внимание на то, что здесь имеется 3 метода: chten, zapis, stiran, которые обслуживают созданное свойство, реализуя операции, соответственно, чтения, записи или удаления значений свойства. Теперь попробобавали некоторые операции с этим свойством: + +_Код:_ +```py +exempl=Class4(12) +print(exempl.svojstvo) +exempl.svojstvo=45 +print(exempl.svojstvo) +del exempl.svojstvo +``` + +_Вывод:_ +```py +12 +45 +``` + +После этого попробовали еще раз отобразить значение свойства: +_Код:_ +```py +print(exempl.svojstvo) +``` + + +_Вывод:_ +```py +Traceback (most recent call last): + File "C:\Users\user\OneDrive\Documents\ZelenkinaKs\python-labs\TEMA9\report.py", line 102, in + print(exempl.svojstvo) + ^^^^^^^^^^^^^^^ + File "C:\Users\user\OneDrive\Documents\ZelenkinaKs\python-labs\TEMA9\report.py", line 89, in chten + return sam.__prm + ^^^^^^^^^ +AttributeError: 'Class4' object has no attribute '_Class4__prm' +``` +Свойство было удалено. exempl.svojstvo → вызывает chten(). chten() пытается вернуть sam.__prm. Python ищет _Class4__prm (после преобразования). Атрибут удален → AttributeError + + +## 8. Пример представления в виде класса модели системы автоматического регулирования (САР). +_Код:_ +```py +class SAU: + def __init__(self, zn_param): + self.param = zn_param + self.ypr = [0, 0] + + def zdn_zn(self, upr): + self.x = upr + + def model(self): + def inerz(x, T, yy): + return (x + T * yy) / (T + 1) + + y0 = self.x - self.ypr[1] * self.param[3] # Обр.связь с усилителем 2 + y1 = self.param[0] * y0 # Усилитель1 + y2 = inerz(y1, self.param[1], self.ypr[0]) # Инерционное звено1 + y3 = inerz(y2, self.param[2], self.ypr[1]) # Инерционное звено2 + self.ypr[0] = y2 + self.ypr[1] = y3 + + def otobraz(self): + print('y=', self.ypr[1]) +``` + +Проверка работы +_Код:_ +```py +prm=[2.5,4,1.3,0.8] #Параметры модели: коэф.усиления, 2 пост.времени, обратная связь +from SAU import * +xx=[0]+[1]*20 #Входной сигнал – «ступенька» +SAUe=SAU(prm) # Создаём экземпляр класса +yt=[] +for xt in xx: # Прохождение входного сигнала + SAUe.zdn_zn(xt) + SAUe.model() + SAUe.otobraz() + yt.append(SAUe.ypr[1]) +import pylab +pylab.plot(yt) +pylab.show() +``` + + +_Вывод:_ +```py +y= 0.0 +y= 0.2173913043478261 +y= 0.4763705103969754 +y= 0.686594887811293 +y= 0.8199324616478645 +y= 0.8837201137353929 +y= 0.8994188484874774 +y= 0.8892777072047301 +y= 0.870097963179993 +y= 0.8518346102696789 +y= 0.8387499784485772 +y= 0.8314204114211459 +y= 0.8286051955249649 +y= 0.8285656555914835 +y= 0.8297915186846528 +y= 0.8312697736438287 +y= 0.8324765218921963 +y= 0.8332456979978418 +y= 0.8336163607592184 +y= 0.8337101315489143 +y= 0.833654237067147 +``` + + \ No newline at end of file diff --git a/TEMA9/report.py b/TEMA9/report.py new file mode 100644 index 0000000..041c846 --- /dev/null +++ b/TEMA9/report.py @@ -0,0 +1,117 @@ +# 2.1 +class Class1: #Объявление класса + def zad_zn(self,znach): #Метод 1 класса1 – задание значения data + self.data=znach # self - ссылка на экземпляр класса + def otobrazh(self): # Метод 2 класса1 + print(self.data)#Отображение данных экземпляра класса + +z1=Class1() #Создаём 1-й экземпляр класса +z2=Class1() #Создаём 2-й экземпляр класса + +z1.zad_zn('экз.класса 1') # Обращение к методу класса у 1-го экз. +z2.zad_zn(-632.453) # Обращение к методу класса у 2-го экз. + +z1.otobrazh() +z2.otobrazh() + +z1.data='Новое значение атрибута у экз.1' +z1.otobrazh() + +# 2.2 +class Class2(Class1): #Class2 - наследник класса Class1 + def otobrazh(self): # Метод класса Class2 – переопределяет метод родителя + print('значение=',self.data)#Отображение данных экземпляра +z3=Class2() +print(dir(z3)) +z3.zad_zn('Совсем новое') +z3.otobrazh() +z1.otobrazh() +del z1, z2, z3 + +'''from Mod3 import Class1 # Частичный импорт содержимого модуля +z4 = Class1() +z4.otobrazh()''' + +from Mod3 import Class1 +z4 = Class1() +z4.data = 'значение данного data у экз.4' +z4.otobrazh() + +del z4 +import Mod3 +z4=Mod3.Class2() +z4.zad_zn('Класс из модуля') +z4.otobrazh() +Mod3.otobrazh('Объект') + +# 4 +class Class3(Class2): #Наследник класса Class2, а через него – и класса Class1 + def __init__(self,znach): #Конструктор-вызывается при создании нового экземпляра класса + self.data=znach + def __add__(self,drug_zn): #Вызывается, когда экземпляр участвует в операции «+» + return Class3(self.data+drug_zn) + def zad_dr_zn(self,povtor): #А это - обычный метод + self.data*=povtor + +z5=Class3('abc') +z5.otobrazh() + +z6=z5+'def' +z6.otobrazh() + +# 5 +print(dir(Class3)) +Class3.fio='Иванов И.И.' +print(dir(Class3)) + +z7=Class3(123) +print(dir(z7)==dir(Class3)) +print(z7.fio) + +z7.rozden='1987' +print( dir(z7)) + +print(dir(Class3)) + +print(Class3.__bases__) +print(Class2.__bases__) +print(Class1.__bases__) + +print(Class3.__mro__) + +print(ZeroDivisionError.__mro__) + +# 7 +class Class4: + def __init__(sam,znach): + sam.__prm=znach + def chten(sam): + return sam.__prm + def zapis(sam,znch): + sam.__prm=znch + def stiran(sam): + del sam.__prm + svojstvo=property(chten,zapis,stiran) + +exempl=Class4(12) +print(exempl.svojstvo) +exempl.svojstvo=45 +print(exempl.svojstvo) +del exempl.svojstvo + +#print(exempl.svojstvo) + +###main_SAU +prm=[2.5,4,1.3,0.8] #Параметры модели: коэф.усиления, 2 пост.времени, обратная связь +from SAU import * +xx=[0]+[1]*20 #Входной сигнал – «ступенька» +SAUe=SAU(prm) # Создаём экземпляр класса +yt=[] +for xt in xx: # Прохождение входного сигнала + SAUe.zdn_zn(xt) + SAUe.model() + SAUe.otobraz() + yt.append(SAUe.ypr[1]) +import pylab +pylab.plot(yt) +pylab.show()