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