Создание классов и определение объектов в Python 3
15 апреля, 2017 12:00 пп 6 795 views | Комментариев нетPython | Amber | Комментировать запись
Python – это объектно-ориентированный язык программирования. Объектно-ориентированное программирование (ООП) сосредоточено на создании многоразовых шаблонов кода, в отличие от процедурного программирования, в котором основное внимание уделяется упорядоченным последовательностям инструкциям. При работе над сложными программами объектно-ориентированное программирование позволяет повторно использовать тот или иной шаблон кода и писать более читабельный код, который проще обслуживать.
Одним из важнейших аспектов объектно-ориентированного программирования является различие между классами и объектами:
- Класс – это шаблон объекта. Он определяет набор методов и атрибутов, которые будут применяться ко всем объектам, созданным из этого класса.
- Объект – экземпляр класса, то есть версия класса, через которую он реализуется в программе.
С помощью этого механизма в Python создаются шаблоны (классы), которые в дальнейшем можно использовать в программе (через объекты).
Данное руководство научит создавать классы и объекты, инициализировать атрибуты с помощью метода конструктора и работать с несколькими объектами из одного класса.
Классы
Класс – это прототип объекта.
В коде классы определяются ключевым словом class.
Создайте файл shark.py. Попробуйте определить класс Shark с двумя функциями:
class Shark:
def swim(self):
print("The shark is swimming.")
print("The shark is a predator.")
Определяемые в классе функции называются методами.
В данном случае в качестве аргумента используется слово self – оно ссылается на объекты, основанные на этом классе. Для этого параметр self должен всегда быть первым в функции (но не обязательно единственным её параметром).
Новый класс Shark пока что не создал ни одного объекта Shark. То есть, если вы запустите программу shark.py, ничего не произойдёт.
Теперь у вас есть шаблон для создания объектов.
Объекты
Объект – это экземпляр класса. Используйте класс Shark для создания объекта jimmy.
jimmy = Shark()
Вы инициализировали объект jimmy как экземпляр класса.
Теперь добавьте методы класса Shark в объект jimmy:
jimmy = Shark()
jimmy.swim()
jimmy.be_predator()
Теперь объект jimmy, созданный на основе класса Shark, использует методы swim() и be_awesome(), которые были вызваны с помощью оператора-точки. Этот оператор позволяет сослаться на атрибут объекта. В этом случае атрибут является методом, и он вызывается со скобками, как любая обычная функция.
Поскольку ключевое слово self является параметром методов, как определено в классе Shark, объект jimmy передается методам. Параметр self позволяет методам ссылаться на атрибуты объекта.
При вызове методов объект jimmy автоматически передается с помощью оператора-точки.
Добавьте объект в файл shark.py:
class Shark:
def swim(self):
print("The shark is swimming.")
def be_ predator(self):
print("The shark is a predator.")
def main():
jimmy = Shark()
jimmy.swim()
jimmy.be_ predator()
if __name__ == "__main__":
main()
Запустите программу:
python shark.py
The shark is swimming.
Метод конструктора
Метод конструктора, также известный как метод __init__, позволяет инициализировать данные. Он запускается сразу после создания объекта класса. Он будет первым определением класса и выглядит так:
class Shark:
def __init__(self):
print("This is the constructor method.")
Добавьте метод __init__ в класс Shark; после этого программа выведет следующий результат (без каких-либо изменений в объекте).
This is the constructor method.
The shark is swimming.
The shark is a predator.
Это происходит потому, что метод-конструктор инициализируется автоматически. Этот метод используется для выполнения любой инициализации в объектах класса.
Вместо приведённого выше примера попробуйте создать метод конструктора, который использует переменную name, которая будет присваивать имена объектам. Передайте переменную name как параметр и укажите, что self.name равно name. Добавьте в shark.py:
class Shark:
def __init__(self, name):
self.name = name
После этого нужно отредактировать функции класса, чтобы они ссылались на переменную:
class Shark:
def __init__(self, name):
self.name = name
def swim(self):
# Ссылка на переменную name
print(self.name + " is swimming.")
# Ссылка на переменную name
print(self.name + " is a predator.")
Теперь можно указать, что объект jimmy передаёт переменной name значение Jimmy.
class Shark:
def __init__(self, name):
self.name = name
def swim(self):
print(self.name + " is swimming.")
def be_ predator(self):
print(self.name + " is a predator.")
def main():
# Set name of Shark object
jimmy = Shark("Jimmy")
jimmy.swim()
jimmy.be_awesome()
if __name__ == "__main__":
main()
Запустите программу:
python shark.py
Jimmy is swimming.
Jimmy is a predator.
Имя, которое было присвоено объекту, отображается в выводе. Метод __init__ был определён с параметром name (и с ключевым словом self) и переменной внутри метода.
Поскольку метод конструктора инициализируется автоматически, его не нужно явно вызывать, достаточно передать аргументы в круглых скобках после имени класса при создании нового объекта.
Чтобы добавить другой параметр, например, age, можно создать ещё один метод __init__.
class Shark:
def __init__(self, name, age):
self.
self.age = age
Создавая объект jimmy, можно указать возраст, например:
jimmy = Shark("Jimmy", 5)
Чтобы использовать переменную age, нужно также создать метод в классе, который будет её вызывать.
Метод конструктора позволяет инициализировать определенные атрибуты объекта.
Работа с несколькими объектами
Классы очень полезны тем, что позволяют создавать множество подобных объектов по одному шаблону.
Чтобы лучше понять, как это работает, добавьте в программу ещё один объект на основе класса Shark.
class Shark:
def __init__(self, name):
self.name = name
def swim(self):
print(self.name + " is swimming.")
print(self.name + " is a predator.")
def main():
jimmy = Shark("Jimmy")
jimmy.be_ predator()
stevie = Shark("Stevie")
stevie.swim()
if __name__ == "__main__":
main()
Теперь в программе есть два объекта: jimmy и stevie.
В данном примере метод be_predator используется в объекте jimmy, а swim – в объекте stevie.
Запустите программу:
python shark.py
Jimmy is a predator.
Stevie is swimming.
Теперь в программе используются два объекта, созданных из одного класса.
Заключение
Теперь у вас есть базовые навыки создания классов и объектов, инициализации атрибутов с помощью метода конструктора и работы с несколькими объектами одного класса.
Объектно-ориентированное программирование упрощает работу с кодом, поскольку объекты, созданные для одной программы, могут использоваться в других программах. Сложные объектно-ориентированные программы трудно писать, они требуют тщательного планирования, но в дальнейшем такие программы проще поддерживать.
Читайте также:
- Определение функций в Python 3
- Импорт модулей в Python 3
построение классов и определение объектов в Python 3
0 ∞Python — это объектно-ориентированный язык программирования. Одним из наиболее важных понятий в ООП является различие между классами и объектами:
- Класс — образец, созданный программистом для объекта. Он определяет набор атрибутов, которые будут характеризовать любой объект, который создается из этого класса.
- Объект — экземпляр класса. Это реализованная версия класса, где он проявляется в программе.
В этой статье мы рассмотрим создание классов, экземпляров объектов, инициализацию атрибутов с помощью метода конструктора.А также работу с несколькими объектами одного класса.
- Классы в Python
- Объекты
- Метод конструктора
- Классы Python 3: работа с более чем одним объектом
- Заключение
Классы похожи на образец или прототип для создания объектов. Они определяются с помощью ключевого слова class.
Давайте определим класс Shark, который имеет две связанные с ним функции:
shark.py
classShark: defswim(self): print("The shark is swimming.") defbe_awesome(self): print("The shark is being awesome. ")
Поскольку эти функции объявлены под классом Shark, они называются методами. Методы — это особый вид функции, который определен внутри класса.
Аргументом этих функций является слово self, которое является ссылкой на объекты, созданные на основе этого класса. Чтобы ссылаться на экземпляры (или объекты) класса, self всегда будет первым параметром.
Определение этого класса создает шаблон для объекта Shark, который мы сможем определить позже. То есть, если вы запустите программу, приведенную выше, ничего не будет возвращено.
Объект является экземпляром класса. Мы можем взять класс Shark, определенный выше, и использовать его для создания объекта или экземпляра класса.
Создадим объект Shark с именем sammy:
sammy = Shark()
Мы инициализировали объект sammy как экземпляр класса, установив его равным Shark().
Теперь используем два метода с объектом Shark sammy:
sammy = Shark() sammy.swim() sammy.be_awesome()
Объект sammy использует два метода — swim() и be_awesome(). Мы вызвали их с помощью оператора «.», который ссылается на атрибут объекта. В этом случае атрибут является методом, и он вызывается с круглыми скобками.
Поскольку ключевое слово self было параметром методов класса Shark, объект sammy передается методам. Параметр self позволяет методам ссылаться на атрибуты объекта.
Но когда мы вызываем методы, в круглых скобках ничего не передается. Объект sammy автоматически передается с помощью оператора «.» (точки).
Добавим объект в программе:
shark.py
classShark: defswim(self): print("The shark is swimming.") defbe_awesome(self): print("The shark is being awesome.") defmain(): sammy = Shark() sammy.swim() sammy.be_awesome() if __name__ == "__main__": main()
Запустим программу, чтобы узнать, что она делает:
python shark.py Вывод The shark is swimming. The shark is being awesome.
Объект sammy вызывает два метода в функции main(), указывая запустить эти методы.
Для инициализации данных используется метод конструктора. Он запускается, когдасоздается объект класса. Он также известен, как метод __init__. Это будет первое определение класса:
classShark: def__init__(self): print("This is the constructor method.")
Если в наш пример добавить к классу Shark указанный метод__init__, программа выведет следующее без внесения изменений в экземпляр sammy:
Вывод This is the constructor method. The shark is swimming. The shark is being awesome.
Это связано с тем, что метод конструктора инициализируется автоматически. Вы должны использовать его для любой инициализации в объектах класса.
Создадим метод конструктора, который использует переменную name. Ее мы применим для присвоения имен объектам. Мы передадим name в качестве параметра и зададим self.name, равное name:
shark.py
classShark: def__init__(self, name): self.name = name
Можно изменить строки в функциях, чтобы ссылаться на имена:
shark.py
classShark: def__init__(self, name): self. name = name defswim(self): # Ссылка на имя print(self.name + " is swimming.") defbe_awesome(self): # Ссылка на имя print(self.name + " is being awesome.")
Также мы можем установить имя объекта Shark sammy равным «Sammy», передав его, как параметр класса Shark:
shark.py
classShark: def__init__(self, name): self.name = name defswim(self): print(self.name + " is swimming.") defbe_awesome(self): print(self.name + " is being awesome.") defmain(): # Устанавливаем имя объекта Shark sammy = Shark("Sammy") sammy.swim() sammy.be_awesome() if __name__ == "__main__": main()
Теперь запустим программу:
python shark.py Вывод Sammy is swimming. Sammy is being awesome.
Имя, которое мы передали объекту, выводится. Мы определили метод __init__ с именем параметра (вместе с ключевым словом self) и передали переменную внутри метода.
Метод конструктора инициализируется автоматически, поэтому его не нужно явно вызывать. Достаточно при создании экземпляра класса передать аргументы в круглых скобках, следующих за именем класса.
Если нужно было бы добавить еще один параметр, например возраст, мы могли сделать это, передав его методу __init__:
classShark: def__init__(self, name, age): self.name = name self.age = age
При создании объекта sammy можно передать возраст Сэмми:
sammy = Shark("Sammy", 5)
Чтобы использовать параметр age, также нужно будет создать метод в классе. Методы конструктора позволяют инициализировать определенные атрибуты объекта.
Классы позволяют создавать много похожих объектов на основе одного образца.
Чтобы понять, как это работает, добавим еще один объект Shark в нашу программу:
shark.py
classShark: def__init__(self, name): self.name = name defswim(self): print(self.name + " is swimming.") defbe_awesome(self): print(self.name + " is being awesome.") defmain(): sammy = Shark("Sammy") sammy. be_awesome() stevie = Shark("Stevie") stevie.swim() if __name__ == "__main__": main()
Мы создали второй объект Shark с именем stevie, и передали ему имя «Stevie». В этом примере используются методы be_awesome() с sammy и метод swim() со stevie.
Запустим программу:
python shark.py Вывод Sammy is being awesome. Stevie is swimming.
Результат показывает, что мы используем два разных объекта: объект sammy и объект stevie. Они оба относятся к классу Shark.
Классы позволяют создавать более одного объекта по одному и тому же шаблону, не создавая каждый из них с нуля.
В этой статье мы рассмотрели создание классов, экземпляров объектов, инициализацию атрибутов с помощью конструктора и работу с несколькими объектами одного класса.
Вадим Дворниковавтор-переводчик статьи «How To Construct Classes and Define Objects in Python 3»
Пожалуйста, опубликуйте ваши отзывы по текущей теме статьи. Мы очень благодарим вас за ваши комментарии, лайки, подписки, отклики, дизлайки!
Объясните классы и объекты в Python
Распространите любовь
Классы Python позволяют создавать пользовательские типы данных, которые могут иметь свои собственные атрибуты и методы, а объект является экземпляром класса. Использование классов упрощает организацию данных в программах и управление ими. В этой статье мы объясним основы классов и объектов в Python на примерах.
Учебное пособие по PySpark для начинающих (Spa…
Пожалуйста, включите JavaScript
Учебное пособие по PySpark для начинающих (Spark с Python)1. Введение в классы и объекты
Классы, которые также иногда означают определяемые пользователем типы данных, позволяют создавать чертежи или шаблоны для создания объектов.
Python — это объектно-ориентированный язык программирования, что означает, что в нем особое внимание уделяется использованию классов и объектов для организации данных в программах и управления ими.
Объект является экземпляром класса. Мы можем создать несколько объектов или экземпляров одного и того же класса. Каждый объект имеет свой уникальный набор атрибутов (данных) и методов (функций), определяющих его поведение.
Класс — это определяемый пользователем тип данных, состоящий из атрибутов и методов. Атрибуты — это переменные, которые содержат данные, характерные для экземпляра класса, такие как имя человека, возраст или адрес.
Методы — это функции, определяющие поведение класса, такие как вычисление возраста человека по дате его рождения или вывод его имени и возраста на консоль.
2. Создание классов в Python
В Python классы определяются с использованием класса 9 .Ключевое слово 0028, за которым следует имя класса. Тело класса имеет отступ и содержит атрибуты и методы класса.
См. следующую общую структуру класса в Python:
# Общая структура класса класс мой класс: защита __init__(я, моя_вар): self.my_var = my_var def my_func(self, other_var): вернуть self.my_var + other_var
Внутри класса может быть несколько методов. В приведенном выше примере у нас есть только один метод и один конструктор класса.
Предположим, вы хотите создать чертеж формы Circle
. Мы можем создать для него класс, и тогда у нас может быть несколько экземпляров этого класса.
# Создание класса с именем Circle класс Круг: пи = 3,14159 # Конструктор def __init__(я, радиус): self.radius = радиус # Метод расчета площади область защиты (я): вернуть Circle.pi * self.radius ** 2
3. Создание объектов
После того, как мы определили класс в Python, мы можем создавать объекты этого класса, используя имя класса, за которым следуют круглые скобки. Создание объекта класса также называется созданием экземпляра класса.
Пример создания объекта класса Circle
, который мы определили ранее:
# Создаем объект класса круг_объект = Круг(3)
Когда мы создаем объект класса, Python автоматически вызывает метод __init__
класса с создаваемым объектом в качестве первого аргумента ( self
), за которым следуют любые другие аргументы, переданные конструктору класса.
Мы можем создать несколько объектов класса:
# Создание объекта object_1 = Круг(2) # Создание второго объекта object_2 = Круг(3)
4.
Вызов методов классаВ объектно-ориентированном программировании метод — это функция, принадлежащая классу. Мы можем вызывать методы класса для объекта этого класса, используя запись через точку.
Когда мы вызываем метод класса для объекта, Python автоматически передает объект в качестве первого аргумента метода. Вот почему параметр self
используется в определении метода для представления самого объекта.
# Расширенная версия класса Circle класс Круг: def __init__(я, радиус): self.radius = радиус # Получить площадь круга защита get_area (я): возврат 3,14 * собственный радиус ** 2 # Получить длину окружности def get_circumference (я, точность): обратный раунд (2 * 3,14 * self.radius, точность)
Чтобы вызвать метод get_area()
для объекта класса Circle
, мы можем использовать запись через точку.
# Два объекта класса круг1 = круг(5) круг2 = круг(7) # Вызов методов обоих объектов площадь1 = круг1. get_area() площадь2 = круг2.get_area() # Распечатайте и посмотрите результаты печать (область1) # Выход: 78,5 печать (область2) # Вывод: 153,86
5. Вложенные классы
Мы можем определить класс внутри другого класса. Такие классы называются вложенными классами. Вложенный класс может обращаться к атрибутам и методам внешнего класса, а также может быть доступен внешнему классу.
# Пример вложенного класса класс Круг: def __init__(я, радиус, x, y): self.radius = радиус self.center = self.Point(x, y) защита get_area (я): возврат 3,14 * собственный радиус ** 2 # Этот класс внутри класса Circle Класс Точка: def __init__(я, х, у): я.х = х селф.у = у
Теперь мы можем получить доступ к внутреннему классу, используя внешний класс. Чтобы создать объект внутреннего класса, см. следующий код:
# Создание объекта вложенного класса точка = Окружность.Точка(3, 4) печать (точка. x) # Выход: 3 печать (точка.y) # Выход: 4
6. Резюме и заключение
Мы узнали, как классы и объекты работают в Python. От создания классов до создания объектов мы также обсудили вложенные классы. Классы и объекты являются важными понятиями языка программирования Python, поскольку Python поддерживает объектно-ориентированное программирование. Я надеюсь, что эта статья была полезной. Если у вас есть какие-либо вопросы, оставьте их в разделе комментариев.
Приятного программирования!
Учебное пособие по классам и объектам Python
Создание классов
Когда мы создаем класс, мы, по сути, создаем собственный тип данных. Для этого мы должны сначала придумать имя для нашего класса и заполнить его некоторыми методами.
класс Собака(): защита __init__(сам): проходить Def говорить (сам): проходить
Имя этого класса "Собака" и в настоящее время он имеет два метода: init и говорить.
Обычно при создании класса мы создаем метод, известный как конструктор . Конструктор — это то, что будет вызываться автоматически при создании нового экземпляра этого класса. Для создания конструктора мы должны использовать имя метода init (). Нам не нужно вызывать этот метод, делая что-то вроде «instance. init ()», потому что когда мы впервые создадим объект Dog, он будет вызван автоматически.
Чтобы создать новый экземпляр нашего класса Dog, мы можем сделать следующее:
класс Собака(): защита __init__(сам): print("Создал собаку") Def говорить (сам): проходить tim = Dog() # Это напечатает «Создал собаку», потому что __init__ будет вызываться автоматически
Ключевое слово Self
Вы могли заметить, что каждый из моих методов выше содержит ключевое слово self в качестве параметра. На данный момент все методы, которые мы делаем, должны делать именно это. Когда мы вызываем методы экземпляра класса, имя этого экземпляра автоматически передается методу в качестве аргумента self. Это позволяет нам получать доступ и изменять атрибуты, характерные для этого экземпляра.
Чтобы создать новый атрибут, мы должны использовать ключевое слово self следующим образом.
класс Собака(): def __init__(я, имя): self.name = name # self.name теперь является атрибутом класса Dog и имеет определенное значение для каждого экземпляра. Def говорить (сам): проходить Тим = Собака ("Тим")
Поскольку методы init теперь принимают два аргумента (я и имя), мы должны передавать имя при создании нового объекта Dog.
Поскольку это имя специфично для каждого экземпляра, когда мы создаем несколько объектов Dog, все они могут иметь разные имена.
класс Собака(): def __init__(я, имя): self.name = name # self.name теперь является атрибутом класса Dog и имеет определенное значение для каждого экземпляра.