======Классы и объекты====== Сегодня мы поговорим об объектно-ориентированном программировании и о его применении в 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'