From 777e047e527a6391a56e684eb7c04949f466d03f Mon Sep 17 00:00:00 2001 From: SaraikinaVK Date: Mon, 8 Dec 2025 11:42:45 +0300 Subject: [PATCH] done --- TEMA9/Ris1.png | Bin 0 -> 14381 bytes TEMA9/report.md | 259 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 259 insertions(+) create mode 100644 TEMA9/Ris1.png create mode 100644 TEMA9/report.md diff --git a/TEMA9/Ris1.png b/TEMA9/Ris1.png new file mode 100644 index 0000000000000000000000000000000000000000..88bb56176e12a70698c427d2c2c0c9f8e5012dbf GIT binary patch literal 14381 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 + +```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__ - это один из методов, осуществляющих так называемую «перегрузку» операторов. + +```py +z5=Class3('abc') #При создании экземпляра срабатывает конструктор +z5.otobrazh() +значение= abc +z6=z5+'def' +z6.otobrazh() +значение= abcdef +z6.zad_dr_zn(3) +z6.otobrazh() +значение= abcdefabcdefabcdef +``` + +## 5. Присоединение атрибутов к классу. + +```py +dir(Class3) +['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'fio', 'otobrazh', 'zad_dr_zn', 'zad_zn'] +z7=Class3(123) +dir(z7) +['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'data', 'fio', 'otobrazh', 'zad_dr_zn', 'zad_zn'] +dir(z7)==dir(Class3) +False +z7.fio +'Иванов И.И.' +Class3.fio +'Иванов И.И.' +z7.fio == Class3.fio +True +z7.rozden='1987' +dir(z7) +['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'data', 'fio', 'otobrazh', 'rozden', 'zad_dr_zn', 'zad_zn'] +dir(Class3) +['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'fio', 'otobrazh', 'zad_dr_zn', 'zad_zn'] +``` +Атрибут rozden не появился у класса Class3. Атрибуты экземпляра (z7.rozden) создаются в словаре z7.__dict__. Атрибуты класса (Class3.fio) создаются в словаре Class3.__dict__. Эти два словаря независимы друг от друга + +## 6. Выявление родительских классов +Такое выявление делается с помощью специального атрибута __bases__ + +```py +Class3.__bases__ +(,) +Class2.__bases__ +(,) +Class1.__bases__ +(,) +``` +Для получения всей цепочки наследования используйте атрибут __mro__: +```py +Class3.__mro__ +(, , , ) +ZeroDivisionError.__mro__ +(, , , , ) +``` + +## 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) +exempl=Class4(12) +exempl.svojstvo +12 +exempl.svojstvo=45 +print(exempl.svojstvo) +45 +del exempl.svojstvo +exempl.svojstvo +Traceback (most recent call last): + File "", line 1, in + exempl.svojstvo + File "", line 5, in chten + return sam.__prm +AttributeError: 'Class4' object has no attribute '_Class4__prm' +``` +exempl.svojstvo → вызывает chten(). chten() пытается вернуть sam.__prm. Python ищет _Class4__prm (после преобразования). Атрибут удален → AttributeError + +## 8. Пример модели системы автоматического регулирования (САР) +Модуль SAU.py +```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 +###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]) + +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 +import pylab +pylab.plot(yt) +[] +pylab.show() +``` +![](Ris1.png) \ No newline at end of file