Dmitry Kolomeytsev 1 месяц назад
Родитель b47dabcf22
Сommit 6cab258c90

@ -19,14 +19,14 @@
Классы могут быть автономными, т.е. независящими от других классов: Классы могут быть автономными, т.е. независящими от других классов:
```py ```py
>>> class Class1: # Объявление класса >>> class Class1:
... def zad_zn(self, znach): # Метод класса для задания значения поля data ... def zad_zn(self, znach):
... self.data = znach ... self.data = znach
... def otobrazh(self): # Метод класса для отображения значения поля data ... def otobrazh(self):
... print(self.data) ... print(self.data)
... ...
>>> z1 = Class1() # Создание 1-го экземпляра класса >>> z1 = Class1()
>>> z2 = Class1() # Создание 2-го экземпляра класса >>> z2 = Class1()
>>> z1.zad_zn("Экземпляр класса 1") >>> z1.zad_zn("Экземпляр класса 1")
>>> z2.zad_zn(-632.453) >>> z2.zad_zn(-632.453)
>>> z1.otobrazh() >>> z1.otobrazh()
@ -43,8 +43,8 @@
Также классы могут наследоваться от других классов, т.е. иметь такие же поля данных как и класс-родитель и имплементировать его методы, которые можно переопределять. Также классы могут наследоваться от других классов, т.е. иметь такие же поля данных как и класс-родитель и имплементировать его методы, которые можно переопределять.
```py ```py
>>> class Class2(Class1): # Объявление класса-наследника другого класса >>> class Class2(Class1):
... def otobrazh(self): # Переопределение метода класса-родителя ... def otobrazh(self):
... print("Значение =", self.data) ... print("Значение =", self.data)
... ...
>>> z3 = Class2() >>> z3 = Class2()
@ -89,7 +89,7 @@ def otobrazh(obj):
File "/home/s0ba4/mpei/python-labs/TEMA9/Mod3.py", line 5, in otobrazh File "/home/s0ba4/mpei/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'
>>> z4.data = "Значение поля data у экземпляра 4" # Прямая инициализация поля data >>> z4.data = "Значение поля data у экземпляра 4" # Явная инициализация поля data
>>> z4.otobrazh() # Использован метод для отображения значения поля, описанный в Class1 >>> z4.otobrazh() # Использован метод для отображения значения поля, описанный в Class1
Значение поля data у экземпляра 4 Значение поля data у экземпляра 4
``` ```
@ -101,7 +101,7 @@ def otobrazh(obj):
>>> z4.zad_zn("Класс из модуля") >>> z4.zad_zn("Класс из модуля")
>>> z4.otobrazh() # Использован метод для отображения значения поля, описанный в Class2 >>> z4.otobrazh() # Использован метод для отображения значения поля, описанный в Class2
Значение = Класс из модуля Значение = Класс из модуля
>>> Mod3.otobrazh("Объект") # Использована функция otobrazh >>> Mod3.otobrazh("Объект")
Значение объекта = Объект Значение объекта = Объект
``` ```
@ -113,11 +113,11 @@ def otobrazh(obj):
```py ```py
>>> class Class3(Class2): >>> class Class3(Class2):
... def __init__(self, znach): # Специальный метод-конструктор ... def __init__(self, znach):
... self.data = znach ... self.data = znach
... def __add__(self, another_zn): # Специальный метод для сложения ... def __add__(self, another_zn):
... return Class3(self.data + another_zn) ... return Class3(self.data + another_zn)
... def zad_another_zn(self, povtor): # Обычный пользовательский метод ... def zad_another_zn(self, povtor):
... self.data *= povtor ... self.data *= povtor
... ...
>>> z5 = Class3("abc") >>> z5 = Class3("abc")
@ -140,7 +140,7 @@ def otobrazh(obj):
['__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_another_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_another_zn', 'zad_zn']
>>> Class3.fio = "Иванов И.И." >>> Class3.fio = "Иванов И.И."
>>> z7 = Class3(123) >>> z7 = Class3(123)
>>> dir(z7) # Отображение списка атрибутов объекта класса после добавления в него поля fio >>> dir(z7) # Отображение списка атрибутов объекта класса после добавления поля 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__', 'data', 'fio', 'otobrazh', 'zad_another_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_another_zn', 'zad_zn']
>>> dir(z7) == dir(Class3) >>> dir(z7) == dir(Class3)
False False

Загрузка…
Отмена
Сохранить