Классы в Python

В данной статье по классам Python мы изучим их работу и доступ к ним.

С другой стороны, мы обсудим, что такое объект в Python и различные атрибуты класса.

И напоследок мы обсудим как удалять объекты, атрибуты и классы в Python.

Как мы часто говорили, Python — это объектно-ориентированный язык. Это означает, что он фокусируется на объектах, а не на процедурах. Объект может моделировать реальный мир.

Итак, приступим к изучению классов.

Что такое классы в Python?

Класс — это по сути план для объектов. Один класс можно использовать для любого hublot replica watch количества объектов. Его также можно назвать абстрактным типом данных.

То есть он сам не содержит никаких значений, но является прототипом для разных объектов.

Теперь давайте разберем это поподробнее.

Синтаксис классов в Python

Определяем класс в Python

Для определения класса в Python используется ключевое слово class. Подобно тому, как ключевое слово def используется для определения функции.

И также как и в функции, в классе Python может быть строка документации. Обычно это несколько слов о том, что делает этот класс.

Аналогично функциям, для создания пустого класса используется оператор pass.

class fruit:
        """
        This Python3 class creates instances of fruits
        """
        pass

Одновременно с объявлением класса создается объект этого класса.

Но помните, что можно назвать класс только в соответствии с правилами именования идентификаторов, которые мы обсуждали в нашем руководстве по переменным Python.

fruit

# Результат:
# <class ‘__main__.fruit’> #The class object

Класс в Python может иметь собственные атрибуты и методы. Они задаются обычным образом.

Рассмотрим следующий пример:

class fruit: 
           """
           This class creates instances of fruits
           """
           color = ''
           def sayhi(self):
                    print("Hi")

orange = fruit()

Здесь color это атрибут класса, а sayhi его метод. Метод можно вызвать на объекте класса friut.

Внутри метода можно также определять функции, которые являются объектами первого класса в Python.

class try1:
         def mymethod(self):
                  def sayhello():
                           print("Hello")
                  print("Hi")
                  sayhello()

obj1=try1()
obj1.mymethod()

Результат:

Hi

Hello

Атрибуты класса можно также создавать и “на лету”:

orange.shape = 'Round'
orange.shape

# Результат:
# ‘Round’

Доступ к членам классов в Python

Для доступа к членам классов в Python используется оператор точка ‘ . ‘. Давайте создадим объект orange для нашего класса fruit.

orange = fruit()

Теперь давайте получим доступ к атрибуту color данного класса.

orange.color

# Результат:
# ''

В результате получилась пустая строка, потому что именно так мы определили данный атрибут в нашем классе.

orange.sayhi()

# Результат:
# Hi

Здесь мы вызвали метод sayhi() на объекте orange. Методы класса также могут принимать аргументы, если это определено соответствующим образом.

class fruit:
          def size(self,x):
                  print(f"I am size {x}")

orange = fruit()
orange.size(7)

# Результат:
# I am size 7

Класс в Python также может иметь некоторые специальные атрибуты, такие как __doc__ для строки документации.

fruit.__doc__

# Результат:
# ‘\n\tThis class creates instances of fruits\n\t’

Чтобы получить больше информации об этом, прочитайте руководство по методам Python.

Но сейчас мы рассмотрим пример, включающий в себя магический метод __init__() и параметр self.

class fruit:
         def __init__(self,color,size):
                  self.color=color
                  self.size=size
         def salutation(self):
                  print(f"I am {self.color} and a size {self.size}")

orange = fruit('Orange', 7)
orange.salutation()

# Результат:
# I am Orange and a size 7

Как видите, метод __init__() эквивалентен конструктору в C++ или Java. Он вызывается каждый раз, когда мы создаем объект класса.

Аналогично, параметр self сообщает интерпретатору, что нужно работать с текущим объектом. Это похоже на ключевое слово this в Java.

В отличии от Java, параметр self не является ключевым словом, его можно именовать как угодно, но принято все же self.

Здесь orange.salutation() эквивалентно fruit.salutation(orange).

Кроме того, salutation это объект типа функция для класса friut, но для экземпляра класса friut по имени orange он является методом.

fruit.salutation

# Результат:
# <function fruit.salutation at 0x0628FE40>

orange.salutation

# Результат:
# <bound method fruit.salutation of <__main__.fruit object at 0x062835F0>>

Для дальнейшего использования метод объекта можно сохранить в отдельную переменную.

sayhi = orange.salutation
sayhi()

# Результат:
# I am Orange and a size 7

Что такое объекты в Python?

Итак, насколько полезен класс Python 3 без объекта? Если класс — это идея, то объект — ее воплощение.

При создании объекта класса вызывается метод __init__().

И, как мы обсуждали ранее, значения объекта передается в класс через параметр self.

orange = fruit('Orange', 7)

Здесь мы передали ‘Orange’ и 7 в качестве значений атрибутов color и size.

Мы также можем объявлять атрибуты объекта “на лету”.

orange.shape = 'Round'
orange.shape

# Результат:
# ‘Round’

Значение объекта также можно сохранить и в другой переменной.

apple = orange
apple.color

# Результат:
# ‘Orange’

Подробнее объекты мы разберем в нашей следующей статье.

Атрибуты класса в Python

Для начала переопределим наш класс fruit.

class fruit:
         size='Small'
         def __init__(self,color,shape):
                self.color=color
                self.shape=shape
         def salutation(self):
                print(f"I am {self.color} and a shape {self.shape}")

Здесь атрибут size принадлежит классу, но мы также можем его вызвать и у объекта данного класса.

fruit.size

# Результат:
# ‘Small’

orange = fruit('Orange','Round')
orange.size

# Результат:
# ‘Small’

Поскольку мы переопределили класс, мы снова объявили и объект.

Точно также класс в Python может содержать в себе функции.

class fruit:
           size='Small'
           def __init__(self,color,shape):
                      self.color=color
                      self.shape=shape
           def salutation():
                      print(f"I am happy")

fruit.salutation()

# Результат:
# I am happy

fruit.salutation

# Результат:
# <function fruit.salutation at 0x030C8390>

Как удалять классы, атрибуты и объекты в Python

Классы, атрибуты и объекты можно удалять при помощи оператора del.

del orange.shape
orange.shape

Результат:

Traceback (most recent call last):File “<pyshell#118>”, line 1, in <module>

orange.shape

AttributeError: ‘fruit’ object has no attribute ‘shape’

Теперь давайте попробуем удалить объект.

del orange
orange

Результат:

Traceback (most recent call last):File “<pyshell#120>”, line 1, in <module>

orange

NameError: name ‘orange’ is not defined

И наконец, давайте удалим сам класс.

fruit

# Результат:
# <class '__main__.fruit'>

del fruit
fruit

Результат:

Traceback (most recent call last):File “<pyshell#133>”, line 1, in <module>

fruit

NameError: name ‘fruit’ is not defined

На этом пока все о классах в Python. Мы надеемся, что вам все понравилось.

Вопросы с собеседований по классам в Python

  1. Что такое классы в Python? Приведите примеры.
  2. Как вызывать классы в Python?
  3. Замедляют ли работу классы?
  4. Когда следует использовать классы в Python?
  5. Как следует определять классы в Python?

Заключение

В данной статье про классы Python мы рассказали вам что это такое и как их создавать.

Мы увидели, как объявлять классы и получать доступ к их атрибутам и методам в Python. Слишком много для первого раза? Тогда поскорей займитесь практикой!

А далее мы перейдем к объектам.

Перевод статьи Python Class Tutorial – Python Object & Attributes Belonging to Class.

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Scroll to Top