# 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()