From 5b78df2a997fd474f29e570759902ad783dca2e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9=20=D0=90=D0=BD?= =?UTF-8?q?=D1=82=D0=BE=D0=BD=D0=BE=D0=B2?= Date: Wed, 17 Dec 2025 19:36:01 +0300 Subject: [PATCH] done lab work --- TEMA9/Mod3.py | 18 +++ TEMA9/SAU.py | 21 +++ TEMA9/control.py | 30 ++++ TEMA9/fig.png | Bin 0 -> 14381 bytes TEMA9/k002.png | Bin 0 -> 18141 bytes TEMA9/k20.png | Bin 0 -> 17904 bytes TEMA9/k5.png | Bin 0 -> 15311 bytes TEMA9/report.md | 352 +++++++++++++++++++++++++++++++++++++++++++++++ TEMA9/task.md | 70 ++++++++++ TEMA9/test.py | 14 ++ 10 files changed, 505 insertions(+) create mode 100644 TEMA9/Mod3.py create mode 100644 TEMA9/SAU.py create mode 100644 TEMA9/control.py create mode 100644 TEMA9/fig.png create mode 100644 TEMA9/k002.png create mode 100644 TEMA9/k20.png create mode 100644 TEMA9/k5.png create mode 100644 TEMA9/report.md create mode 100644 TEMA9/task.md create mode 100644 TEMA9/test.py diff --git a/TEMA9/Mod3.py b/TEMA9/Mod3.py new file mode 100644 index 0000000..3c294cc --- /dev/null +++ b/TEMA9/Mod3.py @@ -0,0 +1,18 @@ +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) + +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 diff --git a/TEMA9/SAU.py b/TEMA9/SAU.py new file mode 100644 index 0000000..74c2768 --- /dev/null +++ b/TEMA9/SAU.py @@ -0,0 +1,21 @@ +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]) diff --git a/TEMA9/control.py b/TEMA9/control.py new file mode 100644 index 0000000..01d321e --- /dev/null +++ b/TEMA9/control.py @@ -0,0 +1,30 @@ +class Departament: + + def __init__(self,fio,otdel,dolzhnost,oklad): + self.fio = fio + self.otdel = otdel + self.dolzhnost = dolzhnost + self.oklad = oklad + self.__prm = list() + def increase(self,put): + self.oklad += put + + def new_work(self,new_otdel): + self.otdel = new_otdel + + def new_dolzhnost(self,new_dolzh): + self.dolzhnost = new_dolzh + + def all_info(self): + print(self.fio,self.otdel,self.dolzhnost,self.oklad,self.prop) + + def getter(self): + return self.__prm + + def setter(self,new): + self.__prm.append(new) + + prop = property(getter,setter) + + + diff --git a/TEMA9/fig.png b/TEMA9/fig.png new file mode 100644 index 0000000000000000000000000000000000000000..64c402ba542b8f266a7398ac58548387e6350d25 GIT binary patch literal 14381 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

%_K7hH~+ounVl(N)XA@8VQ)F( zCfSPk_I%;za)qX?ueLbnDV6b?6~fnorCS39zUZMwgG~cAKJwJMXC>V;9Yj3`MoXQU z{#qq5H1jmYrP!%UZa%86m;i?|4h_ z?o&3|j^FjKbwQw031o4%ogQ|<7Aueg5+pXAz!jJ0ee*74VeCFL^8nPji0Dz&G{vsw z@+vU}04=G{U%v);NF-U99z;#YUp+eCs>4-JL2RCzUZ-`@ak441@2^dgDK&F^Yj7cOALMUX5D$HsBytT>CFkVQYU~xyzuLb zgWX2uZdOv+SJ+9WdxzhFiruR0T8qex%(M%c2#gyCxSPSaZ5tvuuqh^OJT&BBx!rGp z407NC0}pSjc|lbW2QC|JAcXV5@r1puz&|xWL~YsP-Ot94vnN^tZ}D%8t8i z6!_}`&z&dgaSJsC0n_l&y*I>YAqA3EhrXRSxX| zF~F5wCQ_A+jpH}_j9fN=0I_f3H8>PA;4cGIk~Jl zu>|ZnmB?dTi7lfHA_+eL#pXyj&%Qp}IZ;IbO_Z<@6)D{0F0oihb6}=R8uQhuY5+N^ zU(){UWt?+Gqfy#@4syfC!LVS!WLELdG?SOjiCPnYI$l>&R2h($ literal 0 HcmV?d00001 diff --git a/TEMA9/k20.png b/TEMA9/k20.png new file mode 100644 index 0000000000000000000000000000000000000000..85d271ca14ee31b3ceb97dab31107bc7c4626a9b GIT binary patch literal 17904 zcmeIabySq!yEgs|p$JMSB}j`%mw+^q0us^<3J8+YFw_``lF}gE9U=$}Y0%Owser&B zjKt6b?;bwi^F8PM&U)8+e}BGfy??lPW@hjG?7FYJuG_cTnkrX_>4+f+x}thtQ3rzX z5D)}gAi4m)5gD3U0)Hetm5e-fU7vXRJaV^%G#+_Ab8_``dit2z+t%IVsjG`HpP&Gr zAP=*>r{^;d34VU(f4AUsb+_a9a6MfHqg;A+-`E3!$R6ST!HQ%HpF)t5nX2MFJ>RsA z*-HWOW6ftT%U8jKCY61QEWuys2Q`cwg4&)CA;1Sw1&9EGs;=WPLlB~m9D+fR(`$$b zf~(d-?x$`9I#Vx0f*_0>XtOoS|e)iKGk?_l=BuT!iUieWfJ~OxujKlv*nGgpIrOgcLfiAXKt{i%7-1Lmd}}a$6Fs;YgF;GBSy9ouKYyHz>z_UP zxEK68#qOr8?0jQ!f<$a=?9$PC<^Hr5q5M2{yxf!~&j(x`s~ZJImu$Ygx&(Kuc=d{) z*{_KD>opF|uJ0+r*uC(Gi1^XbQACRYXqhXlM6z%Q-)g6^{WJMtI9G+Nb$$QORBmH} z|K1-?v02Z!rQg3ZFm4VG4!cLsTW}MaGLnH9Wde-m{L#`4m~m5V1(UdY9*=RgqCtfj z=YaHn+S1Ze*XmGiepy*rcjtTA;FdbCht3WxKn$UempmHG_yj5R%eKZ%UAyBsb>G*v z5<6>2W8z6)kcQ@VW5dG3y-0q(AS78zGYW{}6agX8tc&(BA)bUtXE|8xU?(u8Z8&!WjFXg8NBUF3xG?c2A*b*`3E zjXth%$BHT{>wVuDO+M-NIHHys#*S_5m2)06-&MF}Td00)uO3VZmS~PdOq3bt;+yO8 z!drTJdu``i0%H>sZyD$ZR$GM1va?D(__RXRn zHuNGJNEOp!Wo2FJpm(J#$=M|0qc?&I4gZz|VS`T=nc$jj z9XF(WwL_b&JEK%r`qP)Id->ub>BUex2KvL~(4uv2o_Z+lVK-It(x+bkp5OQ!HfuC~ z)d4Ckf4Ixuotb}7531XyZ-C2%%{+5^Z8lf<(M1q|*tivvm7Gm*nt7Oik11)L#`zs% z`Y)Tlz(TxQ6=RI5-%4+Q@sUzRfM3-&|3DM@2s2qJg$kx|4WZayKMwTqAuIH}>+~mx zRX~kvmKSm9!^6nAIhI>$L3gVg=e(DbPzIlEr^!@z zPi7s8p>RF{GA_qV4mp1tA)L{JcD?SIG)cM7%K1H$4?bM5R9V9CZ`;hyu^xIx`>RKU z$D%DK^$jWZwQ5%^wIC>&3O1;0aut$(oWr_={NvfY%upFGCc4tSo=T>6?`dt*?o?2- zt=-L@nsDJIe}!RBZdM2q5LMU0f4M`3Xc;|domxEVwj&ENv_Kv{Zg^r!{lnED?w_uQ*71%-f@&lSb(B#LDjfC3zpeeM-3jI*Ts1}Zni@%(~yH6tk zK~LnMnoC;ineV?=26{d#2)+q4l@%$0TqyHg>cRq!-nZctW<)q-U&s1xa)Ii3 z+8p5@PvnauGXURSLC55NW&Nf`5UteZPe;7yW4J5h#e&gsId0~aC4#rRF`|d=9Q0aBZYbvPd%bS{8`x)q%oByfIRN-)BhK=u3wXNN3Fa|XSZyl+7@dB?EOU-9?J0&IM z>a}ZZY${Rl8mXdhsY3W5_;0*CLZCv~1plqu7$!{~?{Ch=W@e&ik)CV6nw{5%^M(BP zoKnPGGn{6T`m(17TZ_v;tvnXVF2XY?BDesxC9}2@+rQwj2^rZ$l9 zPk^n6myVvrbin`+a3^X=e-$WC1ul68 zIO*N*Sn!)5D8QZ2*D4KYrX{d(lg{7@$vKTf12YI7Z;ZpWM^kr1t;v)JCm&tx|CpOF;pju z-5rTdNMOgmNE(kqIUMd}p7AgRpL_`T`}yKrr?zg}_hdnZ*JMl;rWeNoM?HlzN~}t6 z7nfY=23V1ioD(PaR9hZK@TQd-N3UN5@3u z)r$s$>yW&$FFENXd||LciWh)#)H|tGhppZ}OQeC6FM#x1253njr%!l;tC09!kHQ`u z@C!Hz^E>2gF_@)^4{@HB+EnODiwm)NoOp-^| zgcKn?M{@s8SoO^t5X7Pa)l_Z&kZ==yu*1*;t%^}yUIai(B#xIAlAwn)J-ZR}^XfG! zis1=&2QJ#*cmxphC=r7C$*axz5$@+}co!h%T>wPMc(;Zi*r4!*cYIb5BoBc5k+Q=% z)^u_?G@Fk=5c3^ew>)T4MnVVa`DT2@BWj442$H)^0r8ei%E1O(uO{P`E)VqCOX@b? zmjrDY8SFoA169GCcixrHYM#2y6{kD?`QnuqfR~Nv( zQ?&^`{CSn(I*am9T*JRMQR#X)w6rUTXz1k1ub8`zO2UT_ykN;aZwQ&y90DR-63RS~ zOABvHv|GVxIDy4KRK9}v`SVfi)LS>)B!E`hh7GbPFB((4I{yN^DJS9w-l{AO^Z8{Z z2DeAZ8`}L&Xg^EchE<~4PP%ez+xvV`$5iD53Djo9s({5Kzrn6w+u;hU`Ro4d4EsZL z%B@N|%;ZpNrG73RZ144V)RkWs-jqcNNeQdQPOF3-+2TV^-%MJY z?y^B8(BnG{)8aP;`P2sV>syO-F64EFCzKtO$YommkTkY9+#;GXG~!Ej*X*J>j_xf; zTXZj~S8I{b%c*P6T=pfgR<=Q!5{)IsP;x(d^oS*h1ACUbjrW?uHmA zK^z`=e#yGS@C)vIabCj=1@;AOSrTQ&W}&#L8m4pcTOQ95C)gY3am&&=I#Mk!J?rE~GWdQ7I8TC+o* zow*&Ntlr+>ERXT=Sz6b48~t|FygkEZG5b1$mmzQ~%fZbny84oj&<-Q=e13Y3)MxI{!z>e3z$D46!@4Na^$c!)9~?IXJ>EG!`vn8{`~&* zN{kBQQ1o&m20d?CmNmCF{QPqlY_LT4Gmk6nna{>Tje)Fk8Jj%cS^|$x|&Y;5czBF|(;mFdrDR^E`S^=vJ&9ECp1%x)z|aaa5CB|^udWtS zRa4t;3>wIgMw&JNXUcs5I2HKWZx1lACcbygO>zzkUkCEclD4yX@((% z>Wi8THvO>bZW8AAf;Az8*CZ<>bGQ_zV`0H3HuLP|J~D<)r6-nM-DbHbVSC17Kvh#S zDuPkkhq+45 zot1$k5E4M+3>4)&q<*9n;rEn9s85#ayZ@DTCYt^Gv3y(3BMj3V`7fn}o@U9MEgd)7 znr^-o^|OEwhsF|6%ia%1_x18Rl(v}npUID#smaN=1CRF-n*H}h8wP-%o0pgOt#Ns| zfn!62Zlne>DY`l-jO~5(*;%r{6V-kl+1t>+7Mt0M?DPKvgQ{$y0L+-7?eFg?N1ngF zy zIh3X4nU(11`Fu@(ySJ|8YEt+X08A1BIja6ouJaXQN|6(~E7D5zCAKa{yK6zSEvRi> zE$RHuBPvSDRgKyoelz~)=ISSXbW^Rtt!0+27A} zqmbfoT0Klm7*krgJt6~`%$ytT)- zAn1W0*#fYt{Kj2)_50Qxff?RM$7HWR2hrO7fr@V3-JIjp^nsPSAsiyjK8l+dluw{B z-v?;a>LNEeGdFmL^*{TZ2BtOzuH++4fU&Rp3Ci)(Z&L=k;>-Isba0@e&lzdo{rCzN z(kh^qsux~o$Ii%@cr$UvbYnuscV01cG!wC)beMw3CACTkC9wou;hC zduvyGw^pai|H|x$LB2tZF$m<8&7|1?E;QU7b|jSj8_gh8Z~DS>eboX!z@^vbZ>^qj zve)doq^J;HSNT^U=G)!So3)OUqlbH>Yoq-v42w60i<^((^E*Q^o=NysWO!MGekF*$ zLBaqBA^V+LDCjSS;^7qy1tj}@<=78+cKV0UzF!!l24AB!+P4UH5WIf{1S7Wht4SeHXe= zr5e_A4-LFT0fNUafMQY~#85NOV=-SC!ZFMV@SW*Y1bx}_6gto zY-rxB>yuxJ^~o-q)y-4*nUT8;_jfaoa;asENx7M{uQ8roWvO-%oBTva*N{InymWc+ zEtj}&j!q?)N6}=Ug?ZucH7Qf`$oB)fq4HEj&9I@sIeJ=p7u_=pl-@kYaG<}ZO?^#t zR6MER!(o|QIueR1C|$2~w5^xFnck~n{6gZPl6K<|RGb%IadBl*9EMNacx7~AY+Mra z9S_AudF#g@>H4$wbPFlwuzkm_VdKDG zh%mnOd~f*@VpIMdrQk~{Ns`^QT9%CCO7Y)8u31iV!SWXq{pSyKs0ZpN|H@`L+-)Pt z4B`$x@Qu#6Z59%mX*Q?6NjuWmXF5F^knmMFZdcUbOqR2vEMZ`e(UIs?2vXl21lF3d zPuj(h`lgZede61J=zWCb7AjaQOSfC}vWh*%)lGSn z%H7rcLxbf!LsbTz#_zi~uHI+xMWwT1_>%Y-b%N`~%{NDMC(@D4{rldTJB1b3(0&Y) zsG00O4~x)-kqX0!LkrPg4v~?B3Yht~BbBmVDAIHX+4-#xsOE;zGrGClQkGp*c%+$+ zgY14_z?rku@r(qraK_!(!1UB(5)U?59VaLGjR*d|j9ifrf$d*PB+2<+rsMSJEb`_As{kXl##ylf%9da4~=yVX({U0TZQ4>f}pHD zs>I$O!8B_EMZ~Up$w!^zFX6fuydr&~8UBnI^V9gsESin&6q7&HH?0iS&>J5YNgMaC z)SaE!tTJT37_L89IyyVGa+RKn#ayxjMFk%n7ZL0a{P9e@!MtXl?4s+zP`Oc|d^E?O zJKm{Cvlai;fen3*bquYRNKiu)QnQC%6SMq2ZgXeMOCqfpkyWuD;q?g*lk&!8)gao5 z$e8P>$iUF&w);gEDycDWX)2y&csFwdG@w^xocU@iKU$~=3BIpJi5~QRc};{!bcWp- z$nJBvP4LjX?aANItx>B?Ij6-8d4;OTvg5*z-mmlY%w)XNoYAdkkr7>Lv40{I1!F-> z^RO?>e0%(p!jU@&BT3zHLp)%7?=rc`i9!Bjj$01)Nu>)d z?r1ELlPodhnB6GGOXZR&b|7-kAP3=*73s<^F{E%2jE)}&y;qKFmp|ULqFKN8hfdz& zaal#4%Vz6G7Z&1Z`;mkv;9eDbpqPERn2}$zTgv3K(avKW7(c480MnA0m4T-IYfUp~ zaCw?|AI<4z?r_zMv(6M|RJe}i2coL&GG9;ARZJwYecdev)>2T5m#^oFlB;?_o&Lzk z_S(}+&TE)CgHhdql})&T9UWiknO}wDLH~iJ%jEiQU{l@Oyl-NzQv4Bb#;s#TcAm8#cX8% zsO6uM{4ZTF(@2cammjU=hb#vhWUsrTUb4sfH|doG zR)kAX{gpaS$?hUSxLw~*qW<(0rdKZI5OP6;WBN3QSbDAEVc>2h8~l50$?lz=~%e1 zrV+-bkQUX88goZI^}wd}qKp=KFYKPi8uOC^lOI9BU$s;IelOhCxR>(X@`E~Ky439~ z-oTQDM`s_1XUi*p`{{)+W-Om>)>qe^EQMt_nO-d8fs4nzz{`pAl;F1(VK6G|(v}zU?4nB>d3& z^JreJ!yy-yOawJ#_~))Z*0GkFN92|k)#C>N-sw&Q+~cOYELx$Bnk7n==^#ZBD%G(C zLmZMrym_N`?0dd(gmOx?jBAjQ5etpot+x-0MAT%b0!OcowQ4;4ycsRqq-|l*YN_K@ zSKg?kMJPQcq27fLIRY(Pb!@0n;@ELGs<&TaBGhZ|0W0}iIL^E=#Ho29uRUDfe5x{h z4rIzYr4ZDY5l@`3JCy{Y<9Y(Y=0>_?M*eyA-2tVRdKY{{d``ZF4!$Pqjvpejh@ z;vFv|pvtYit~NTOhO93egPwy^guc^2gqPoPpCrm<36&vjbvmq?R3Tr+;q%p1nh zks=J09Io7;_z6cQd~Mf%Ou+4pYz*cY#*#o){t-x4Hco-0E&3wH#bl;iC&;QNB`Pu-W0p0L-O^Nttt)#@)9>cgM~ zkh-9L975f;v`5+;pWcfDEuov0*##9AGEPOO`Xj9%z$$V+1xT-*8U$G7N3JvhyOXoD zB94zCXE|q+L17z2T#0T0)3>NQZY-Yt2}tCHFlWQ3Ew-f_3>_W@R>iuc03^obyu13 zM;qYj&mHqvwwO`#Tkw#{9AqVHxY?H5;$_*%uY$lVlKyUEq`@zvp+T%Ig)cIZ7RBY|3B0DC4mPeaGFI^W?>&9+@4U)G9eulEXmUiD z#)`fc8ZX|o)WV>dOTc8upL9b;+S<&VoSZ=u#l2ir`uh5+41@~}WxSh5wQB6Z5flXz`u>oGx3y39G>FK#CC@A2LPE20& z1w~(Qcz)ed7^t?M!; ze-#3oe?7ZvGg-kk>w~7WZ?Wc<%MU{KD z!M8TXSu{Wh(wWJu5XkqeubGYhPWi2rKG4^P@$S>il$mWj(+WP)J=~jiT|PZVC%Lv9 zDxadyPPK4RrNegqpr5lU8nB%&B>Y{y{H;8V-W#zX9%rs4wpdIoN?%$FNw9upXXC8U zAiigCrwl9UA{VAOgaaEGP=u~?O~wOjEA(^mAYQn7DPw16r}>fgL*2F_PIJ8le?V%< zGp%#kUXeYUk|c}}@XrxfTClk=}#MF(f%vxKBzuoDVV?zp8Ds*3vFYK zBri=aHL>r%+I+l8evK12vZOyi%+c!Ru8*;thIzAIrYCA=i`oIUTXyNh`O#mzg>8n- z&H2)cd8;mVAU27xlp?7;Eta1m9V)ON75SzoP;%^JtFVt�iAx@doR)q5SI#IQW+VsAkoUN6yYGqnyL` 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 U(r)GhRt2dmYb%v1Jbd~;06duHWB>pF literal 0 HcmV?d00001 diff --git a/TEMA9/report.md b/TEMA9/report.md new file mode 100644 index 0000000..236c696 --- /dev/null +++ b/TEMA9/report.md @@ -0,0 +1,352 @@ +# Отчет по теме 9 + +**Антонов Дмитрий, А-03-23** + +### 1.Начало работы, настройка текущего каталога +```py +import os +os.chdir('//Users//dmitrijantonov//Desktop//POAC//python-labs//TEMA9//') +``` +### 2.Создание классов и их наследников +#### 2.1 Создание класса +```py +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-й экземпляр класса +dir() +['Class1', '__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'os', 'z1'] +``` +- Вызов методов у экзмепляров класса +```py +z2=Class1() +z1.zad_zn('экз.класса 1') +z2.zad_zn(-632.453) +z1.otobrazh() +экз.класса 1 +z2.otobrazh() +-632.453 +z1.data='Новое значение атрибута у экз.1';z1.otobrazh() +Новое значение атрибута у экз.1 +``` +#### 2.2 Создание класса-наследника +```py +class Class2(Class1): #Class2 - наследник класса Class1 + def otobrazh(self): # Метод класса Class2 – переопределяет метод родителя + print('значение=',self.data)#Отображение данных экземпляра + +z3=Class2() +dir(z3) +['__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__', 'otobrazh', 'zad_zn'] +z3.zad_zn('Совсем новое') +z3.otobrazh() +значение= Совсем новое +z1.otobrazh() +``` +- Родитлеский класс не изменил значение поля класса +```py +Новое значение атрибута у экз.1 +del z1,z2,z3 +``` +### 3. Использование классов, содержащихся в модулях +```py +from Mod3 import Class1 #Частичный импорт содержимого модуля +z4=Class1() +z4.otobrazh() +Traceback (most recent call last): + File "", line 1, in + z4.otobrazh() + File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA9/Mod3.py", line 5, in otobrazh + print(self.data)#Отображение данных экземпляра +AttributeError: 'Class1' object has no attribute 'data' +``` +- Нет  data, ничего не задавали -> нечего вывести +```py +z4.zad_zn(2) +z4.otobrazh() +2 +from Mod3 import Class1 +z4=Class1() +z4.data='значение данного data у экз.4' +z4.otobrazh() +значение данного data у экз.4 +del z4 +dir() +['Class1', '__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'os'] +``` +- Меняем значение у класса, значение экземпляра - неизменно +```py +import Mod3 +z4=Mod3.Class2() +z4.zad_zn('Класс из модуля') +z4.otobrazh() +значение= Класс из модуля +Mod3.otobrazh('Объект') +значение объекта= Объект +z4.otobrazh() +значение= Класс из модуля +``` +### 4.Использование специальных методов +```py +import Mod3 +z5=Mod3.Class3('abc') #При создании экземпляра срабатывает конструктор __init__ +z5.otobrazh() +значение= abc +``` +- При операции выполнении+ срабатывает метод _add_ +```py +z6=z5+'def' +z6.otobrazh() +значение= abcdef +z6.zad_dr_zn(3) +type(z6) + +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__', 'otobrazh', 'zad_dr_zn', 'zad_zn'] +``` +- Создание нового отрибута +```py +Class3.fio='Иванов И.И.' +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) +``` +- Отличие в data +```py +dir(z7)==dir(Class3) +False +z7.fio +'Иванов И.И.' +z7.otobrazh() +значение= 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(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'] +``` +- Значение не изменилось у родительского класса +```py +z7.fio ='fff' +z7.fio +'fff' +Class3.fio +'Иванов И.И.' +z7.rozden='1987' +``` +- Атрибут rozden не появится у родительского класса +```py +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'] +``` +### 6.Выявление родительских классов +- Выявление родительских классов с помощью атрибута _bases_ +```py +from Mod3 import Class1,Class2,Class3 +dir() +['Class1', 'Class2', 'Class3', 'Mod3', '__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'os'] +Class3.__bases__ +(,) +Class2.__bases__ +(,) +Class1.__bases__ +(,) +``` +- Выявление родительских классов (вся цепочка) с помощью атрибута _mro_ +```py +Class3.__mro__ +(, , , ) +ZeroDivisionError.__mro__ +(, , , , ) +``` +### 7. Создание свойства класса +```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) +``` +- Инициализация свойства (getter setter) +```py +exempl=Class4(12) +exempl.svojstvo +12 +exempl.svojstvo=45 +exempl.svojstvo +45 +print(exempl.svojstvo) +45 +del exempl.svojstvo +print(exempl.svojstvo) +``` +- Свойство удалено у экземпляра, невозможно обратиться. У класса свойство остается +```py +Traceback (most recent call last): + File "", line 1, in + print(exempl.svojstvo) + File "", line 5, in chten + return sam.__prm +AttributeError: 'Class4' object has no attribute '_Class4__prm' + +newexp=Class4(12) +newexp.svojstvo +12 +``` +- Вывод: Удаляется только атрибут __prm, а не весь экземпляр. Ошибка возникает из-за попытки чтения несуществующего атрибута. Нужно добавить проверку в методы класса. +### 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 +###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() +``` +- Запуск модуль тестирования +```py +import test +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 +``` +![График переходного процесса](fig.png) +```py +===== RESTART: /Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA9/test.py ==== +y= 0.0 +y= 0.4347826086956522 +y= 0.8771266540642723 +y= 1.1305662858551822 +y= 1.1883971255105579 +y= 1.1326349288718767 +y= 1.0497533578387872 +y= 0.990644578833048 +y= 0.9679847053552146 +y= 0.9716581950194924 +y= 0.9856417751200821 +y= 0.9982074917220521 +y= 1.0046687323933552 +y= 1.005560453221529 +y= 1.0035460777605603 +y= 1.0010934567866612 +y= 0.9995090295694802 +y= 0.9990060583193288 +y= 0.999210776397813 +y= 0.9996464852690349 +y= 0.9999972035112243 +``` +![График переходного процесса](k5.png) +```py +===== RESTART: /Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA9/test.py ==== +y= 0.0 +y= 10.434782608695652 +y= -62.42722117202269 +y= 441.6213035259309 +y= -3045.006010698934 +y= 21072.830598329532 +y= -145756.02311219365 +y= 1008239.1249389423 +y= -6974221.774992491 +y= 48242372.61584475 +y= -333704038.94107586 +y= 2308310792.118783 +y= -15967138737.795193 +y= 110448523882.25536 +y= -763998899668.5714 +y= 5284763419071.18 +y= -36555974632436.45 +y= 252866434191791.06 +y= -1749137704131481.2 +y= 1.209920453773572e+16 +y= -8.369309637553866e+16 +``` +![График переходного процесса](k20.png) +```py +===== RESTART: /Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA9/test.py ==== +y= 0.0 +y= 1.7391304347826089 +y= 1.6937618147448015 +y= 0.9085559299745211 +y= 0.9495540682030151 +y= 1.3035341690149207 +y= 1.2757616169252037 +y= 1.116425550960422 +y= 1.133140167539201 +y= 1.2047517464994821 +y= 1.1953257047692445 +y= 1.163190713632341 +y= 1.168291227922628 +y= 1.1826887757160904 +y= 1.180006868007609 +y= 1.1735666352933953 +y= 1.1749473300671665 +y= 1.17782341716993 +y= 1.1771240746521525 +y= 1.175841826810497 +y= 1.1761915011970139 +``` +![График переходного процесса](k002.png) diff --git a/TEMA9/task.md b/TEMA9/task.md new file mode 100644 index 0000000..b52490a --- /dev/null +++ b/TEMA9/task.md @@ -0,0 +1,70 @@ +# Общее контрольное задание по теме 8 + +**Антонов Дмитрий, А-03-23** \ +Общее контрольное задание. +Создайте и запишите в модуль класс, содержащий следующие компоненты: +- конструктор, задающий четырем атрибутам (fio, otdel, dolzhnost, oklad), представляющим фа-милии сотрудников, название отделов, названия должностей сотрудников и размеры их окладов, некоторые начальные значения; +- метод для обеспечения операции повышения оклада сотрудника на заданное значение; +- метод для обеспечения перевода сотрудника из одного отдела в другой; +- метод для изменения должности сотрудника; +- свойство, содержащее перечень (список) поощрений сотрудника. +```py +class Departament: + + def __init__(self,fio,otdel,dolzhnost,oklad): + self.fio = fio + self.otdel = otdel + self.dolzhnost = dolzhnost + self.oklad = oklad + self.__prm = list() + def increase(self,put): + self.oklad += put + + def new_work(self,new_otdel): + self.otdel = new_otdel + + def new_dolzhnost(self,new_dolzh): + self.dolzhnost = new_dolzh + + def all_info(self): + print(self.fio,self.otdel,self.dolzhnost,self.oklad,self.prop) + + def getter(self): + return self.__prm + + def setter(self,new): + self.__prm.append(new) + + prop = property(getter,setter) +``` +Задание: Создайте 2 экземпляра класса, задайте им некоторые значения атрибутов и свойства. Отобразите эти значения. Попробуйте с этими экземплярами операции перевода из отдела в отдел, измене-ния должности и оклада, объявления благодарности. +```py +from control import Departament +empl_fr = Departament("Иванов И.И.","УИТ","Доцент",100) +empl_sec = Departament("Петров П.П.","ИРЭ","Аспирант",50) + +empl_fr.all_info() +Иванов И.И. УИТ Доцент 100 [] + +empl_sec.all_info() +Петров П.П. ИРЭ Аспирант 50 [] + +empl_sec.new_work("УИТ") +empl_sec.all_info() +Петров П.П. УИТ Аспирант 50 + +empl_fr.new_dolzhnost("Академик") +empl_fr.increase(120) +empl_fr.all_info() +Иванов И.И. УИТ Академик 220 + +empl_fr.prop="Отличная работа!" +empl_fr.all_info() +Иванов И.И. УИТ Академик 220 Отличная работа! + +empl_fr.prop="Отличная работа!" +empl_fr.prop="Отличная работа!" +empl_fr.prop="Отличная работа!" +empl_fr.all_info() +Иванов И.И. УИТ Доцент 100 ['Отличная работа!', 'Отличная работа!', 'Отличная работа!'] +``` \ No newline at end of file diff --git a/TEMA9/test.py b/TEMA9/test.py new file mode 100644 index 0000000..46ac620 --- /dev/null +++ b/TEMA9/test.py @@ -0,0 +1,14 @@ +###main_SAU +prm=[0.01,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()