@ -66,14 +66,14 @@
```
```
Импортируем первый класс из модуля с помощью обычной инструкции:
Импортируем первый класс из модуля с помощью обычной инструкции:
```python
```python
>>>from Mod3 import Class1 #Частичный импорт содержимого модуля
>>>from Mod3 import Class1
>>>z4 = Class1()
>>>z4 = Class1()
>>>z4.otobrazh()
>>>z4.otobrazh()
Traceback (most recent call last):
Traceback (most recent call last):
File "< pyshell # 171 > ", line 1, in < module >
File "< pyshell # 171 > ", line 1, in < module >
z4.otobrazh()
z4.otobrazh()
File "/Users/ArtyomBushmanov/python-labs/TEMA9/Mod3.py", line 5, in otobrazh
File "/Users/ArtyomBushmanov/python-labs/TEMA9/Mod3.py", line 5, in otobrazh
print(self.data)#Отображение данных экземпляра
print(self.data)
AttributeError: 'Class1' object has no attribute 'data'
AttributeError: 'Class1' object has no attribute 'data'
```
```
Данная ошибка возникает потому, что метод otobrazh() пытается обратиться к self.data, а Атрибут data еще не был создан для экземпляра z4. Мы не вызывали метод zad_zn(), который создает атрибут data.
Данная ошибка возникает потому, что метод otobrazh() пытается обратиться к self.data, а Атрибут data еще не был создан для экземпляра z4. Мы не вызывали метод zad_zn(), который создает атрибут data.
@ -131,16 +131,16 @@ NameError: name 'z4' is not defined
['__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']
['__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']
>>>Class3.fio='Иванов И.И.'
>>>Class3.fio='Иванов И.И.'
>>>dir(Class3)
>>>dir(Class3)
['__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']# Появился атрибут fio
['__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']
>>>z7=Class3(123)
>>>z7=Class3(123)
>>>dir(z7)
>>>dir(z7)
['__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', 'zad_dr_zn', 'zad_zn']
['__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', 'zad_dr_zn', 'zad_zn']
>>>dir(z7)==dir(Class3)
>>>dir(z7)==dir(Class3)
False # Список атрибутов класса не совпадает со списком атрибутов экземпляра
False
>>>print(z7.fio)
>>>print(z7.fio)
Иванов И.И.
Иванов И.И.
>>>z7.fio == Class3.fio
>>>z7.fio == Class3.fio
True # Видим совпадение значений
True
>>>dir(z7)
>>>dir(z7)
['__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', 'zad_dr_zn', 'zad_zn']
['__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', 'zad_dr_zn', 'zad_zn']
>>>dir(Class3)
>>>dir(Class3)
@ -150,15 +150,15 @@ True # Видим совпадение значений
## 6. Выявление родительских классов.
## 6. Выявление родительских классов.
```python
```python
>>> Class3.__bases__ # Вывод родительского класса
>>> Class3.__bases__
(< class ' __main__ . Class2 ' > ,)
(< class ' __main__ . Class2 ' > ,)
>>> Class2.__bases__
>>> Class2.__bases__
(< class ' __main__ . Class1 ' > ,)
(< class ' __main__ . Class1 ' > ,)
>>> Class1.__bases__
>>> Class1.__bases__
(< class ' object ' > ,)
(< class ' object ' > ,)
>>> Class3.__mro__ # Получение всей цепочки наследования
>>> Class3.__mro__
(< class ' __main__ . Class3 ' > , < class ' __main__ . Class2 ' > , < class ' __main__ . Class1 ' > , < class ' object ' > )
(< class ' __main__ . Class3 ' > , < class ' __main__ . Class2 ' > , < class ' __main__ . Class1 ' > , < class ' object ' > )
>>> ZeroDivisionError.__mro__ # Получение всю цепочку наследования для встроенного класса ошибок «деление на ноль»
>>> ZeroDivisionError.__mro__
(< class ' ZeroDivisionError ' > , < class ' ArithmeticError ' > , < class ' Exception ' > , < class ' BaseException ' > , < class ' object ' > )
(< class ' ZeroDivisionError ' > , < class ' ArithmeticError ' > , < class ' Exception ' > , < class ' BaseException ' > , < class ' object ' > )
```
```
@ -210,10 +210,10 @@ AttributeError: 'Class4' object has no attribute '_Class4__prm'
def inerz(x,T,yy):
def inerz(x,T,yy):
return (x+T*yy)/(T+1)
return (x+T*yy)/(T+1)
y0=self.x-self.ypr[1]*self.param[3] #Обр.связь с усилителем 2
y0=self.x-self.ypr[1]*self.param[3]
y1=self.param[0]*y0 #Усилитель1
y1=self.param[0]*y0 #Усилитель1
y2=inerz(y1,self.param[1],self.ypr[0]) #Инерционное звено1
y2=inerz(y1,self.param[1],self.ypr[0])
y3=inerz(y2,self.param[2],self.ypr[1]) #Инерционное звено2
y3=inerz(y2,self.param[2],self.ypr[1])
self.ypr[0]=y2
self.ypr[0]=y2
self.ypr[1]=y3
self.ypr[1]=y3
@ -224,12 +224,12 @@ AttributeError: 'Class4' object has no attribute '_Class4__prm'
Тестирование класса:
Тестирование класса:
```python
```python
###mainSAU
###mainSAU
>>>prm=[2.5,4,1.3,0.8] #Параметры модели: коэф.усиления, 2 пост.времени, обратная связь
>>>prm=[2.5,4,1.3,0.8]
>>>from SAU import *
>>>from SAU import *
>>>xx=[0]+[1]*20 #Входной сигнал – «ступенька»
>>>xx=[0]+[1]*20
>>>SAUe=SAU(prm) # Создаём экземпляр класса
>>>SAUe=SAU(prm)
>>>yt=[]
>>>yt=[]
>>>for xt in xx: # Прохождение входного сигнала
>>>for xt in xx:
SAUe.zdn_zn(xt)
SAUe.zdn_zn(xt)
SAUe.model()
SAUe.model()
SAUe.otobraz()
SAUe.otobraz()