======Классы и объекты======
Сегодня мы поговорим об объектно-ориентированном программировании и о его применении в python.
**Объектно-ориентированное программирование (ООП)** — парадигма программирования, в которой основными концепциями являются понятия объектов и классов.
Класс — тип, описывающий устройство объектов. **Объект** — это экземпляр класса. Класс можно сравнить с чертежом, по которому создаются объекты.
Python соответствует принципам объектно-ориентированного программирования. В python всё является объектами - и строки, и списки, и словари, и всё остальное.
Но возможности ООП в python этим не ограничены. Программист может написать свой тип данных (класс), определить в нём свои методы.
Это не является обязательным - мы можем пользоваться только встроенными объектами. Однако ООП полезно при долгосрочной разработке программы несколькими людьми, так как упрощает понимание кода.
Приступим теперь собственно к написанию своих классов на python. Попробуем определить собственный класс:
# Пример простейшего класса, который ничего не делает
class A:
pass
Теперь мы можем создать несколько экземпляров этого класса:
a = A()
b = A()
a.arg = 1 # у экземпляра a появился атрибут arg, равный 1
b.arg = 2 # а у экземпляра b - атрибут arg, равный 2
print(a.arg)
print(b.arg)
результат:
1
2
c = A()
print(c.arg) # а у этого экземпляра нет arg
Traceback (most recent call last):
File "", line 1, in
AttributeError: 'A' object has no attribute 'arg'
Классу возможно задать собственные методы:
class A:
def g(self): # self - обязательный аргумент, содержащий в себе экземпляр
# класса, передающийся при вызове метода,
# поэтому этот аргумент должен присутствовать
# во всех методах класса.
return 'hello world'
a = A()
a.g()
Результа:
'hello world'
И напоследок еще один пример:
class B:
arg = 'Python' # Все экземпляры этого класса будут иметь атрибут arg,
# равный "Python"
# Но впоследствии мы его можем изменить
def g(self):
return self.arg
b = B()
b.g()
B.g(b)
b.arg = 'spam'
b.g()
Резлультат:
'Python'
'Python'
'spam'