#17 – Основы ООП. Создание класса и объекта
ООП – объектно-ориентированное программирование. Является одной из наиболее важных концепций языка Python. Мы с вами приступаем к изучению теоретической и практической реализации ООП. За урок мы научимся прописывать классы и объекты в языке Питон.
На начальном этапе ООП – это тёмный лес, в котором многое непонятно и слишком усложнено. На самом деле всё вовсе не так. Предлагаем абстрагироваться от специфических (непонятных) определений и познакомиться с ООП простыми словами.
ООП простыми словами
Поскольку на примере все усвоить гораздо проще, то давайте за пример возьмем робота, которого постараемся описать за счёт классов в ООП.
Класс в случае с роботом – это его чертёж. Экземпляром класса (объектом) называет целый робот, который создан точно по чертежу.
Наследование – это добавление полезных опций к чертежу робота. К примеру, берем стандартный чертёж робота и дорисуем к нему лазеры, крылья и броню.
Все эти дорисовки мы сделаем в классе наследнике, основной функционал которого взят из родительского класса.
Полиморфизм – это общий функционал для всех роботов и не важно что каждый робот может очень сильно отличаться друг от друга. К примеру, в главном классе мы указываем возможность передвижения для всех последующих роботов. Далее в классе наследнике мы можем дополнительно указать возможность левитации для робота, в другом же классе укажем возможность передвижения по воде и так далее. Получается, что есть общий функционал что записан в главном чертеже, но его можно переписать для каждого последующего робота (для каждого наследника).
А инкапсуляция является для нас бронёй, защищающей робота. Под пластырем брони находятся уязвимые элементы, вроде проводов и микросхем. После прикрытия брешей с помощью брони (protected или private), робот полностью защищён от внешних вмешательств. По сути, мы делаем доступ ко всем полям лишь за счёт методов, тем самым прямой доступ к полю будет закрыт.
У всех классов методы могут отличаться, как и поля с конструкторами. Каждый класс позволяет создавать любое количество разных объектов, все из них имеют собственные характеристики.
Создание классов
Для создания класса необходимо прописать ключевое слово class и далее название для класса. Общепринято начинать названия классов с буквы в верхнем регистре, но если этого не сделать, то ошибки не будет.
В любом классе можно создавать поля (переменные), методы (функции), а также конструкторы.
Создав новый класс и поместив туда какую-либо информацию мы можем создавать на основе него новые объекты. Объекты будут иметь доступ ко всем характеристикам класса.
Пример простого класса приведен ниже:
class Book: pass # Класс может ничего не возвращать
На основе такого класса мы можем создать множество объектов. Каждый объект в данном случае будет представлять из себя конкретную книжку. Для каждого объекта мы можем указать уникальные данные.
Чтобы создать объект нам потребуется следующий код:
obj_new = Some() # Создание объекта obj_second = Some() # Создание 2 объекта
ОСновы работы с классами в python 3 ~ PythonRu
Объектно-ориентированное программирование в Python
Python — это процедурно-ориентированный и одновременно объектно-ориентированный язык программирования.
Процедурно-ориентированный
«Процедурно-ориентированный» подразумевает наличие функций. Программист может создавать функции, которые затем используются в сторонних скриптах.
Объектно-ориентированный
«Объектно-ориентированный» подразумевает наличие классов. Есть возможность создавать классы, представляющие собой прототипы для будущих объектов.
Создание класса в Python
Синтаксис для написания нового класса:
class ClassName:
'Краткое описание класса (необязательно)'
# Код ...
- Для создания класса пишется ключевое слово
class, его имя и двоеточие (:).
Первая строчка в теле класса описывает его. (По желанию) получить доступ к этой строке можно с помощью ClassName.__doc__ - В теле класса допускается объявление атрибутов, методов и конструктора.
Атрибут:
Атрибут — это элемент класса. Например, у прямоугольника таких 2: ширина (width) и высота (height).
Метод:
- Метод класса напоминает классическую функцию, но на самом деле — это функция класса. Для использования ее необходимо вызывать через объект.
- Первый параметр метода всегда
self(ключевое слово, которое ссылается на сам класс).
Конструктор:
- Конструктор — уникальный метод класса, который называется
__init__ . - Первый параметр конструктора во всех случаях
self(ключевое слово, которое ссылается на сам класс). - Конструктор нужен для создания объекта.
- Конструктор передает значения аргументов свойствам создаваемого объекта.

- В одном классе всегда только один конструктор.
- Если класс определяется не конструктором, Python предположит, что он наследует конструктор родительского класса.
# Прямоугольник.
class Rectangle :
'Это класс Rectangle'
# Способ создания объекта (конструктор)
def __init__(self, width, height):
self.width= width
self.height = height
def getWidth(self):
return self.width
def getHeight(self):
return self.height
# Метод расчета площади.
def getArea(self):
return self.width * self.height
Создание объекта с помощью класса Rectangle:
# Создаем 2 объекта: r1 & r2
r1 = Rectangle(10,5)
r2 = Rectangle(20,11)
print("r1.width = ", r1.width)
print("r1.height = ", r1.height)
print("r1.getWidth() = ", r1.getWidth())
print("r1.getArea() = ", r1.getArea())
print("-----------------")
print("r2.width = ", r2.width)
print("r2.height = ", r2.height)
print("r2.
getWidth() = ", r2.getWidth())
print("r2.getArea() = ", r2.getArea())
Что происходит при создании объекта с помощью класса?
При создании объекта класса Rectangle запускается конструктор выбранного класса, и атрибутам нового объекта передаются значения аргументов. Как на этом изображении:
Конструктор с аргументами по умолчанию
В других языках программирования конструкторов может быть несколько. В Python — только один. Но этот язык разрешает задавать значение по умолчанию.
Все требуемые аргументы нужно указывать до аргументов со значениями по умолчанию.
class Person:
# Параметры возраста и пола имеют значение по умолчанию.
def __init__(self, name, age=1, gender="Male"):
self.name = name
self.age = age
self.gender= gender
def showInfo(self):
print("Name: ", self.name)
print("Age: ", self.age)
print("Gender: ", self.gender)
Например:
from person import Person # Создать объект Person.aimee = Person("Aimee", 21, "Female") aimee.showInfo() print(" --------------- ") # возраст по умолчанию, пол. alice = Person( "Alice" ) alice.showInfo() print(" --------------- ") # Пол по умолчанию. tran = Person("Tran", 37) tran.showInfo()
Сравнение объектов
В Python объект, созданный с помощью конструктора, занимает реальное место в памяти. Это значит, что у него есть точный адрес.
Если объект AA
BB, то он не будет сущностью, занимающей отдельную ячейку памяти. Вместо этого он лишь ссылается на местоположение BB.Оператор == нужен, чтобы узнать, ссылаются ли два объекта на одно и то же место в памяти. Он вернет True, если это так. Оператор != вернет True, если сравнить 2 объекта, которые ссылаются на разные места в памяти.
from rectangle import Rectangle
r1 = Rectangle(20, 10)
r2 = Rectangle(20 , 10)
r3 = r1
# Сравните r1 и r2
test1 = r1 == r2 # --> False
# Сравните r1 и r3
test2 = r1 == r3 # --> True
print ("r1 == r2 ? ", test1)
print ("r1 == r3 ? ", test2)
print (" -------------- ")
print ("r1 != r2 ? ", r1 != r2)
print ("r1 != r3 ? ", r1 != r3)
Атрибуты
В Python есть два похожих понятия, которые на самом деле отличаются:
- Атрибуты
- Переменные класса
Стоит разобрать на практике:
class Player:
# Переменная класса
minAge = 18
maxAge = 50
def __init__(self, name, age):
self.
name = name
self.age = age
Атрибут
Объекты, созданные одним и тем же классом, будут занимать разные места в памяти, а их атрибуты с «одинаковыми именами» — ссылаться на разные адреса. Например:
from player import Player
player1 = Player("Tom", 20)
player2 = Player("Jerry", 20)
print("player1.name = ", player1.name)
print("player1.age = ", player1.age)
print("player2.name = ", player2.name)
print("player2.age = ", player2.age)
print(" ------------ ")
print("Assign new value to player1.age = 21 ")
# Присвойте новое значение атрибуту возраста player1.
player1.age = 21
print("player1.name = ", player1.name)
print("player1.age = ", player1.age)
print("player2.name = ", player2.name)
print("player2.age = ", player2.age)
Python умеет создавать новые атрибуты для уже существующих объектов. Например, объект player1
address.from player import Player
player1 = Player("Tom", 20)
player2 = Player("Jerry", 20)
# Создайте новый атрибут с именем «address» для player1.
player1.address = "USA"
print("player1.name = ", player1.name)
print("player1.age = ", player1.age)
print("player1.address = ", player1.address)
print(" ------------------- ")
print("player2.name = ", player2.name)
print("player2.age = ", player2.age)
# player2 е имеет атрибута 'address' (Error!!)
print("player2.address = ", player2.address)
Вывод:
player1.name = Tom
player1.age = 20
player1.address = USA
-------------------
player2.name = Jerry
player2.age = 20
Traceback (most recent call last):
File "C:/Users/gvido/class.py", line 27, in
print("player2.address = ", player2.address)
AttributeError: 'Player' object has no attribute 'address'
Атрибуты функции
Обычно получать доступ к атрибутам объекта можно с помощью оператора «точка» (например, player1.name). Но Python умеет делать это и с помощью функции.
| Функция | Описание |
|---|---|
getattr (obj, name[,default]) | Возвращает значение атрибута или значение по умолчанию, если первое не было указано |
hasattr (obj, name) | Проверяет атрибут объекта — был ли он передан аргументом «name» |
setattr (obj, name, value) | Задает значение атрибута. Если атрибута не существует, создает его |
delattr (obj, name) | Удаляет атрибут |
from player import Player
player1 = Player("Tom", 20)
# getattr(obj, name[, default])
print("getattr(player1,'name') = " , getattr(player1,"name"))
print("setattr(player1,'age', 21): ")
# setattr(obj,name,value)
setattr(player1,"age", 21)
print("player1.age = ", player1.age)
# Проверка, что player1 имеет атрибут 'address'?
hasAddress = hasattr(player1, "address")
print("hasattr(player1, 'address') ? ", hasAddress)
# Создать атрибут 'address' для объекта 'player1'
print("Create attribute 'address' for object 'player1'")
setattr(player1, 'address', "USA")
print("player1.address = ", player1.address)
# Удалить атрибут 'address'.
delattr(player1, "address")
Вывод:
getattr(player1,'name') = Tom setattr(player1,'age', 21): player1.age = 21 hasattr(player1, 'address') ? False Create attribute 'address' for object 'player1' player1.address = USA
Встроенные атрибуты класса
Объекты класса — дочерние элементы по отношению к атрибутам самого языка Python. Таким образом они заимствуют некоторые атрибуты:
| Атрибут | Описание |
|---|---|
__dict__ | Предоставляет данные о классе коротко и доступно, в виде словаря |
__doc__ | Возвращает строку с описанием класса, или None, если значение не определено |
__class__ | Возвращает объект, содержащий информацию о классе с массой полезных атрибутов, включая атрибут __name__ |
__module__ | Возвращает имя «модуля» класса или __main__, если класс определен в выполняемом модуле. |
class Customer:
'Это класс Customer'
def __init__(self, name, phone, address):
self.name = name
self.phone = phone
self.
address = address
john = Customer("John",1234567, "USA")
print ("john.__dict__ = ", john.__dict__)
print ("john.__doc__ = ", john.__doc__)
print ("john.__class__ = ", john.__class__)
print ("john.__class__.__name__ = ", john.__class__.__name__)
print ("john.__module__ = ", john.__module__)
Вывод:
john.__dict__ = {'name': 'John', 'phone': 1234567, 'address': 'USA'}
john.__doc__ = Это класс Customer
john.__class__ =
john.__class__.__name__ = Customer
john.__module__ = __main__
Переменные класса
Переменные класса в Python — это то же самое, что Field в других языках, таких как Java или С#. Получить к ним доступ можно только с помощью имени класса или объекта.
Для получения доступа к переменной класса лучше все-таки использовать имя класса, а не объект. Это поможет не путать «переменную класса» и атрибуты.
У каждой переменной класса есть свой адрес в памяти. И он доступен всем объектам класса.
from player import Player
player1 = Player("Tom", 20)
player2 = Player("Jerry", 20)
# Доступ через имя класса.
print ("Player.minAge = ", Player.minAge)
# Доступ через объект.
print("player1.minAge = ", player1.minAge)
print("player2.minAge = ", player2.minAge)
print(" ------------ ")
print("Assign new value to minAge via class name, and print..")
# Новое значение minAge через имя класса
Player.minAge = 19
print("Player.minAge = ", Player.minAge)
print("player1.minAge = ", player1.minAge)
print("player2.minAge = ", player2.minAge)
Вывод:
Player.minAge = 18 player1.minAge = 18 player2.minAge = 18 ------------ Assign new value to minAge via class name, and print.. Player.minAge = 19 player1.minAge = 19 player2.minAge = 19
Составляющие класса или объекта
В Python присутствует функция dir, которая выводит список всех методов, атрибутов и переменных класса или объекта.
from player import Player
# Вывести список атрибутов, методов и переменных объекта 'Player'
print(dir(Player))
print("\n\n")
player1 = Player("Tom", 20)
player1.
address ="USA"
# Вывести список атрибутов, методов и переменных объекта 'player1'
print(dir(player1))
Вывод:
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'maxAge', 'minAge'] ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'address', 'age', 'maxAge', 'minAge', 'name']
Классы и объекты Python [Руководство] — PYnative
Python — это объектно-ориентированный язык программирования.
Это означает, что почти весь код реализован с использованием специальной конструкции, называемой классами. Класс — это шаблон кода для создания объектов.
Прочитав эту статью, вы узнаете :
- Что такое класс и объекты в Python
- Атрибуты и методы класса
- Создание и доступ к свойствам объекта
- Изменение и удаление объекта
Содержание
- Что такое класс и объекты в Python?
- Создание класса в Python
- Создание объекта класса
- Атрибуты класса
- Методы класса
- Класс Конвенция
- PASS Оператор в классе
- .
- Удалить объекты
Что такое класс и объекты в Python?
- Класс : Класс представляет собой определяемую пользователем структуру данных, которая связывает элементы данных и методы в единое целое. Класс — это схема или шаблон кода для создания объекта . Используя класс, вы можете создать столько объектов, сколько захотите.

- Объект : Объект является экземпляром класса . Это набор атрибутов (переменных) и методов. Мы используем объект класса для выполнения действий.
Объекты имеют две характеристики: У них есть состояния и поведение (к объекту присоединены атрибуты и методы) Атрибуты представляют его состояние, а методы представляют его поведение. Используя его методы, мы можем изменить его состояние.
Короче говоря, каждый объект имеет следующее свойство.
- Идентификация : Каждый объект должен быть однозначно идентифицирован.
- Состояние : Объект имеет атрибут, который представляет состояние объекта, а также отражает свойство объекта.
- Поведение : Объект имеет методы, которые представляют его поведение.
Python — это объектно-ориентированный язык программирования, поэтому все в Python рассматривается как объект. Объект – это реальная сущность.
Это набор различных данных и функций, которые работают с этими данными.
Например, если мы разрабатываем класс на основе состояний и поведения человека, то состояния могут быть представлены как переменные экземпляра, а поведения — как методы класса.
понять классы и объекты в PythonРеальный пример классов и объектов.
Класс : Лицо
- Состояние : Имя, Пол, Профессия
- Поведение : Работа, Учеба
Используя приведенный выше класс поведения, мы можем изобразить несколько состояний и различных объектов, которые мы можем создать.
Объект 1 : Jessa
- State :
- Имя: Jessa
- Пол: женщина
- Профессия: Инженер -программист
- Поведение :
- . в компании ABC
- Учеба: Она учится 2 часа в день
Объект 2 : Джон
- Штат
- 0 :
- 0
- ИмяСекс: мужчина
- Профессия: Доктор
- .
женщина, и она работает инженером-программистом. С другой стороны, Джон — мужчина, и он юрист. Здесь оба объекта созданы из одного класса, но имеют разные состояния и поведение .Создание класса в Python
В Python класс определяется с помощью ключевого слова
class. Синтаксис для создания класса приведен ниже.Синтаксис
класс имя_класса: '''Это строка документации. Я создал новый класс ''' <утверждение 1> <утверждение 2> . .-
class_name: Это имя класса -
Docstring: Это первая строка внутри класса и содержит краткое описание класса. Хотя это и не обязательно, это настоятельно рекомендуется. -
операторы: Атрибуты и методы
Пример: определение класса в Python
В этом примере мы создаем класс Person с переменными экземпляра имени, пола и профессии.

класс Лицо: def __init__(я, имя, пол, профессия): # элементы данных (переменные экземпляра) self.name = имя селф.секс = секс self.profession = профессия # Поведение (методы экземпляра) деф-шоу (я): print('Имя:', self.name, 'Пол:', self.sex, 'Профессия:', self.profession) # Поведение (методы экземпляра) деф работа(я): print(self.name, 'работа', self.profession)Создать объект класса
Объект необходим для работы с атрибутами класса. Объект создается с использованием имени класса. Когда мы создаем объект класса, это называется созданием экземпляра. Объект также называют экземпляром класса.
Конструктор — это специальный метод, используемый для создания и инициализации объекта класса. Этот метод определен в классе.
В Python создание объекта разделено на две части: Создание объекта и Инициализация объекта
- Внутри,
__new__— это метод, который создает объект - И, используя метод
__init__(), мы можем реализовать конструктор для инициализации объекта.
Подробнее : Конструкторы в Python
Синтаксис
<имя-объекта> = <имя-класса>(<аргументы>)
Ниже приведен код для создания объекта класса Person 3 jessa = Человек(‘Джесса’, ‘Женщина’, ‘Инженер-программист’)
Полный пример :
класс Person: def __init__(я, имя, пол, профессия): # элементы данных (переменные экземпляра) self.name = имя селф.секс = секс self.profession = профессия # Поведение (методы экземпляра) деф-шоу (я): print('Имя:', self.name, 'Пол:', self.sex, 'Профессия:', self.profession) # Поведение (методы экземпляра) деф работа(я): print(self.name, 'работа', self.profession) # создать объект класса Джесса = Человек('Джесса', 'Женщина', 'Инженер-программист') # методы вызова Джесса.шоу() Джесса.работа()Выход :
Имя: Джесса Пол: Женский Профессия: Инженер-программист Джесса работает инженером-программистом
Атрибуты класса
При разработке класса мы используем переменные экземпляра и переменные класса.

В классе атрибуты могут быть разделены на две части:
- Переменные экземпляра : Переменные экземпляра — это атрибуты, прикрепленные к экземпляру класса. Мы определяем переменные экземпляра в конструкторе (
__init__()метод класса). - Переменные класса : Переменная класса — это переменная, объявленная внутри класса, но вне любого метода экземпляра или
__init__()метода.
Объекты не имеют общих атрибутов экземпляра. Вместо этого каждый объект имеет свою копию атрибута экземпляра и уникален для каждого объекта.
Все экземпляры класса совместно используют переменные класса. Однако, в отличие от переменных экземпляра, значение переменной класса не меняется от объекта к объекту.
Будет создана и разделена между всеми объектами класса только одна копия статической переменной.
Доступ к свойствам и присвоение значений
- К атрибуту экземпляра можно получить доступ или изменить его с помощью записи через точку:
имя_экземпляра..
имя_атрибута - Доступ к переменной класса или ее изменение с использованием имени класса
Пример
class Student: # переменные класса school_name = 'Азбука школы' # конструктор def __init__(я, имя, возраст): # переменные экземпляра self.name = имя возраст = возраст s1 = Студент ("Гарри", 12) # доступ к переменным экземпляра print('Ученик:', s1.name, s1.age) # доступ к переменной класса print('Название школы:', Student.school_name) # Изменить переменные экземпляра s1.name = 'Джесса' s1.возраст = 14 print('Ученик:', s1.name, s1.age) # Изменить переменные класса Student.school_name = 'Школа XYZ' print('Название школы:', Student.school_name)Выход
Ученик: Гарри 12 Название школы: Школа АВС Ученик: Джесса 14 Название школы: Школа XYZ
Методы класса
В объектно-ориентированном программировании внутри класса мы можем определить следующие три типа методов.

- Метод экземпляра : Используется для доступа или изменения состояния объекта. Если мы используем переменные экземпляра внутри метода, такие методы называются методами экземпляра.
- Метод класса : Используется для доступа или изменения состояния класса. В реализации метода, если мы используем только переменные класса, то такой тип методов мы должны объявить как метод класса.
- Статический метод : это общий служебный метод, который выполняет задачу изолированно. Внутри этого метода мы не используем переменную экземпляра или класса, потому что этот статический метод не имеет доступа к атрибутам класса.
Методы экземпляра работают на уровне экземпляра (уровень объекта). Например, если у нас есть два объекта, созданные из класса ученика, они могут иметь разные имена, отметки, номера бросков и т. д. Используя методы экземпляра, мы можем получить доступ к переменным экземпляра и изменить их.

Метод класса привязан к классу , а не к объекту класса. Он может получить доступ только к переменным класса.
Подробнее : Метод класса Python, статический метод и метод экземпляра
Пример : Определение и вызов метода экземпляра и метода класса
# демонстрация методов класса Ученик класса: # переменная класса school_name = 'Азбука школы' # конструктор def __init__(я, имя, возраст): # переменные экземпляра self.name = имя возраст = возраст # метод экземпляра деф-шоу (я): # доступ к переменным экземпляра и переменным класса print('Ученик:', self.name, self.age, Student.school_name) # метод экземпляра определение change_age (я, новое_возраст): # изменить переменную экземпляра self.age = новый_возраст # метод класса @классметод def изменить_имя_школы (cls, новое_имя): # изменить переменную класса cls.
school_name = новое_имя
s1 = Студент ("Гарри", 12)
# вызвать методы экземпляра
s1.show()
s1.change_age(14)
# вызов метода класса
Student.modify_school_name('Школа XYZ')
# вызвать методы экземпляра
s1.show()
Выход
Ученик: Гарри 12 Школа ABC Ученик: Гарри 14 XYZ School
Соглашение об именах классов
Соглашения об именах необходимы в любом языке программирования для лучшей удобочитаемости. Если мы дадим осмысленное имя, это сэкономит наше время и силы позже. Написание удобочитаемого кода — один из руководящих принципов языка Python.
Мы должны следовать определенным правилам, когда выбираем имя для класса в Python.
- Правило-1: Имена классов должны соответствовать соглашению UpperCaseCamelCase
- Правило-2: Классы-исключения должны заканчиваться на « Error ».
- Правило-3: Если класс можно вызывать (вызывать класс откуда-то), в этом случае мы можем дать имя класса, например, функцию .

- Правило-4: Встроенные классы Python обычно представляют собой слова в нижнем регистре
В Python pass — это оператор null. Таким образом, при выполнении оператора pass ничего не происходит.
Оператор
passиспользуется, чтобы иметь пустой блок в коде, потому что пустой код не разрешен в циклах, определении функции, определении класса. Таким образом, операторpassне приведет к операции (NOP). Как правило, мы используем его в качестве заполнителя, когда не знаем, какой код написать или добавить код в будущем выпуске.Допустим, у нас есть класс, который еще не реализован, но мы хотим его реализовать в будущем, и у них не может быть пустого тела, потому что интерпретатор выдает ошибку. Так что используйте
передать оператор, чтобы создать тело, которое ничего не делает.Пример
класс Демонстрация: pass
В приведенном выше примере мы определили класс без тела.
Чтобы избежать ошибок при его выполнении, мы добавили оператор passв тело класса.Свойства объекта
Каждый объект имеет свои свойства. Другими словами, мы можем сказать, что свойство объекта является ассоциацией между именем и значением .
Например, автомобиль — это объект, а его свойствами являются цвет автомобиля, люк на крыше, цена, производитель, модель, двигатель и так далее. Здесь цвет — это имя, а красный — значение . Свойства объекта — это не что иное, как переменные экземпляра.
Свойства объектаИзменение свойств объекта
Каждый объект имеет связанные с ним свойства. Мы можем установить или изменить свойства объекта после инициализации объекта, вызвав свойство напрямую с помощью оператора точки.
ОБЪЕКТ.СВОЙСТВО = значение
Пример
класс Фрукты: def __init__(я, имя, цвет): self.name = имя self.color = цвет деф-шоу (я): print("Фрукт есть", self.
name, "и Цвет есть", self.color)
# создание объекта класса
obj = Фрукт ("Яблоко", "красное")
# Изменение свойств объекта
obj.name = "клубника"
# вызов метода экземпляра с использованием объекта obj
obj.show()
# Выходные данные Fruit — клубника, а Color — красный Удалить свойства объекта
Мы можем удалить свойство объекта, используя ключевое слово
del. После его удаления, если мы попытаемся получить к нему доступ, мы получим сообщение об ошибке.класс Фрукты: def __init__(я, имя, цвет): self.name = имя self.color = цвет деф-шоу (я): print("Фрукт есть", self.name, "и Цвет есть", self.color) # создание объекта класса obj = Фрукт ("Яблоко", "красное") # Удаление свойств объекта del obj.name # Доступ к свойствам объекта после удаления печать (имя объекта) # Вывод: AttributeError: Объект "Фрукт" не имеет атрибута "имя"В приведенном выше примере, как мы видим, имя атрибута было удалено, когда мы пытаемся напечатать или получить доступ к этому атрибуту, появляется сообщение об ошибке.

Удалить объекты
В Python мы также можем удалить объект, используя ключевое слово
del. Объект может быть чем угодно, например class object,list,tuple,setи т. д.0003класс Сотрудник: отдел = "ИТ" деф-шоу (я): print("Отдел ", self.depatment) эмп = Сотрудник () emp.show() # удалить объект дель эмп # Доступ после удаления объекта emp.show() # Вывод: NameError: имя 'emp' не определеноВ приведенном выше примере мы создаем объект
empклассаEmployee. После этого с помощью ключевого словаdelмы удалили этот объект.Классы и объекты I Учебники и примечания | Питон
Классы и методы Python
Python — это «объектно-ориентированный язык программирования». Это означает, что почти весь код реализован с использованием специальной конструкции, называемой классами. Программисты используют классы для хранения связанных вещей вместе.
Это делается с помощью ключевого слова «класс», которое представляет собой группу объектно-ориентированных конструкций.К концу этого урока вы сможете:
- Определить, что такое класс
- Опишите, как создать класс
- Определить, что такое метод
- Опишите, как создать экземпляр объекта
- Опишите, как создавать атрибуты экземпляра в Python
Что такое класс?
Класс — это шаблон кода для создания объектов. Объекты имеют переменные-члены и поведение, связанное с ними. В python класс создается ключевым словом
class.Объект создается с помощью конструктора класса. Затем этот объект будет называться экземпляром
9.0170 класса. В Python мы создаем экземпляры следующим образом:Instance = class(arguments)
Как создать класс
Простейший класс можно создать с помощью ключевого слова class. Например, давайте создадим простой пустой класс без каких-либо функций.

>>> класс Змея: ... проходить ... >>> змея = змея() >>> печать(змейка) <__main__.Объект змеи по адресу 0x7f315c573550>
Атрибуты и методы в классе:
Класс сам по себе бесполезен, если с ним не связана какая-либо функциональность. Функциональность определяется установкой атрибутов, которые действуют как контейнеры для данных и функций, связанных с этими атрибутами. Эти функции называются методами.
Атрибуты:
Вы можете определить следующий класс с именем Snake. Этот класс будет иметь имя атрибута
.>>> класс Змея: ... name = "python" # установить атрибут `name` класса ...
Вы можете присвоить класс переменной. Это называется созданием объекта. Затем вы сможете получить доступ к атрибутам, которые присутствуют внутри класса, используя точку
.оператор. Например, в примере Snake вы можете получить доступ к атрибутуnameклассаSnake.>>> # создать экземпляр класса Snake и присвоить его переменной змейке >>> змея = змея() >>> # получить доступ к имени атрибута класса внутри класса Snake.
>>> print(snake.name)
питон
Методы
Если есть атрибуты, которые «принадлежат» классу, вы можете определить функции, которые будут обращаться к атрибуту класса. Эти функции называются методами. Когда вы определяете методы, вам всегда нужно указывать первый аргумент метода с ключевым словом self.
Например, вы можете определить класс
Snake, который имеет один атрибутnameи один методchange_name. Имя изменения метода будет принимать аргументnew_nameвместе с ключевым словомself.>>> класс Змея: ... имя = "питон" ... ... def change_name(self, new_name): # обратите внимание, что первым аргументом является self ... self.name = new_name # доступ к атрибуту класса с помощью ключевого слова self ...
Теперь вы можете создать экземпляр этого класса
Змеяс переменнойзмея, а затем изменить имя с помощью методаchange_name.
-

Первая строчка в теле класса описывает его. (По желанию) получить доступ к этой строке можно с помощью 

aimee = Person("Aimee", 21, "Female")
aimee.showInfo()
print(" --------------- ")
# возраст по умолчанию, пол.
alice = Person( "Alice" )
alice.showInfo()
print(" --------------- ")
# Пол по умолчанию.
tran = Person("Tran", 37)
tran.showInfo()
name = name
self.age = age
player1.address = "USA"
print("player1.name = ", player1.name)
print("player1.age = ", player1.age)
print("player1.address = ", player1.address)
print(" ------------------- ")
print("player2.name = ", player2.name)
print("player2.age = ", player2.age)
# player2 е имеет атрибута 'address' (Error!!)
print("player2.address = ", player2.address)
Если атрибута не существует, создает его
address = address
john = Customer("John",1234567, "USA")
print ("john.__dict__ = ", john.__dict__)
print ("john.__doc__ = ", john.__doc__)
print ("john.__class__ = ", john.__class__)
print ("john.__class__.__name__ = ", john.__class__.__name__)
print ("john.__module__ = ", john.__module__)
print ("Player.minAge = ", Player.minAge)
# Доступ через объект.
print("player1.minAge = ", player1.minAge)
print("player2.minAge = ", player2.minAge)
print(" ------------ ")
print("Assign new value to minAge via class name, and print..")
# Новое значение minAge через имя класса
Player.minAge = 19
print("Player.minAge = ", Player.minAge)
print("player1.minAge = ", player1.minAge)
print("player2.minAge = ", player2.minAge)
address ="USA"
# Вывести список атрибутов, методов и переменных объекта 'player1'
print(dir(player1))

женщина, и она работает инженером-программистом. С другой стороны, Джон — мужчина, и он юрист. Здесь оба объекта созданы из одного класса, но имеют разные состояния и поведение .


имя_атрибута 

school_name = новое_имя
s1 = Студент ("Гарри", 12)
# вызвать методы экземпляра
s1.show()
s1.change_age(14)
# вызов метода класса
Student.modify_school_name('Школа XYZ')
# вызвать методы экземпляра
s1.show()

Чтобы избежать ошибок при его выполнении, мы добавили оператор
name, "и Цвет есть", self.color)
# создание объекта класса
obj = Фрукт ("Яблоко", "красное")
# Изменение свойств объекта
obj.name = "клубника"
# вызов метода экземпляра с использованием объекта obj
obj.show()
# Выходные данные Fruit — клубника, а Color — красный 
Это делается с помощью ключевого слова «класс», которое представляет собой группу объектно-ориентированных конструкций.
>>> print(snake.name)
питон
