Классы и объекты Python

Опубликовано: 8 Апреля, 2022

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

Чтобы понять необходимость создания класса, давайте рассмотрим пример, допустим, вы хотите отслеживать количество собак, которые могут иметь разные атрибуты, такие как порода, возраст. Если используется список, первым элементом может быть порода собаки, а вторым элементом - ее возраст. Предположим, есть 100 разных собак, тогда как вы узнаете, какой элемент должен быть каким? Что, если бы вы захотели добавить этим собакам другие свойства? Здесь не хватает организации, и это как раз то, что нужно для занятий.

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

Некоторые моменты в классе Python:

  • Классы создаются по ключевому слову class.
  • Атрибуты - это переменные, принадлежащие классу.
  • Атрибуты всегда являются общедоступными, и к ним можно получить доступ с помощью оператора точка (.). Например: Myclass.Myattribute
 Синтаксис определения класса:

class ClassName:
    # Заявление-1
    .
    .
    .
    # Заявление-N

Определение класса -

В приведенном выше примере ключевое слово class указывает, что вы создаете класс, за которым следует имя класса (в данном случае Dog).

Объекты класса

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

  • Состояние: оно представлено атрибутами объекта. Он также отражает свойства объекта.
  • Поведение: представлено методами объекта. Он также отражает реакцию объекта на другие объекты.
  • Идентичность: дает уникальное имя объекту и позволяет одному объекту взаимодействовать с другими объектами.

Объявление объектов (также называется созданием экземпляра класса)

Когда создается объект класса, считается, что этот класс создан. Все экземпляры разделяют атрибуты и поведение класса. Но значения этих атрибутов, т.е. состояние, уникальны для каждого объекта. У одного класса может быть любое количество экземпляров.

Пример:

Declaring an object – 

Python3

# Python3 program to
# demonstrate instantiating
# a class
 
 
class Dog:
     
    # A simple class
    # attribute
    attr1 = "mammal"
    attr2 = "dog"
 
    # A sample method 
    def fun(self):
        print("I"m a", self.attr1)
        print("I"m a", self.attr2)
 
# Driver code
# Object instantiation
Rodger = Dog()
 
# Accessing class attributes
# and method through objects
print(Rodger.attr1)
Rodger.fun()

Выход:

mammal
I"m a mammal
I"m a dog

В приведенном выше примере создается объект, который представляет собой собаку по имени Роджер. У этого класса есть только два атрибута класса, которые говорят нам, что Роджер - это собака и млекопитающее.

Я

  • Методы класса должны иметь дополнительный первый параметр в определении метода. Мы не указываем значение для этого параметра при вызове метода, Python предоставляет его.
  • Если у нас есть метод, который не принимает аргументов, то у нас все равно должен быть один аргумент.
  • Это похоже на этот указатель в C ++ и эту ссылку в Java.

Когда мы вызываем метод этого объекта как myobject.method (arg1, arg2), он автоматически преобразуется Python в MyClass.method (myobject, arg1, arg2) - это все, о чем идет речь в специальном self.

__init__ метод

The __init__ method is similar to constructors in C++ and Java. Constructors are used to initializing the object’s state. Like methods, a constructor also contains a collection of statements(i.e. instructions) that are executed at the time of Object creation. It is run as soon as an object of a class is instantiated. The method is useful to do any initialization you want to do with your object.

Python3

# A Sample class with init method
class Person:
   
    # init method or constructor 
    def __init__(self, name):
        self.name = name
   
    # Sample Method 
    def say_hi(self):
        print("Hello, my name is", self.name)
   
p = Person("Nikhil")
p.say_hi()

Выход:

 Привет меня зовут никхил

Переменные класса и экземпляра

Переменные экземпляра предназначены для данных, уникальных для каждого экземпляра, а переменные класса - для атрибутов и методов, общих для всех экземпляров класса. Переменные экземпляра - это переменные, значение которых присваивается внутри конструктора или метода с помощью self, тогда как переменные класса - это переменные, значение которых присваивается в классе.

Defining instance variable using a constructor. 

Python3

# Python3 program to show that the variables with a value 
# assigned in the class declaration, are class variables and
# variables inside methods and constructors are instance
# variables.
    
# Class for Dog
class Dog:
   
    # Class Variable
    animal = "dog"            
   
    # The init method or constructor
    def __init__(self, breed, color):
     
        # Instance Variable    
        self.breed = breed
        self.color = color       
    
# Objects of Dog class
Rodger = Dog("Pug", "brown")
Buzo = Dog("Bulldog", "black")
 
print("Rodger details:")  
print("Rodger is a", Rodger.animal)
print("Breed: ", Rodger.breed)
print("Color: ", Rodger.color)
 
print(" Buzo details:")  
print("Buzo is a", Buzo.animal)
print("Breed: ", Buzo.breed)
print("Color: ", Buzo.color)
 
# Class variables can be accessed using class
# name also
print(" Accessing class variable using class name")
print(Dog.animal)       

Выход:

 Детали Роджера:
Роджер - собака
Порода: Мопс
Коричневый цвет

Подробности Buzo:
Бузо - собака
Порода: Бульдог
Черный цвет

Доступ к переменной класса с использованием имени класса
собака

Defining instance variable using the normal method.

Python3

# Python3 program to show that we can create 
# instance variables inside methods
    
# Class for Dog
class Dog:
       
    # Class Variable
    animal = "dog"     
       
    # The init method or constructor
    def __init__(self, breed):
           
        # Instance Variable
        self.breed = breed            
   
    # Adds an instance variable 
    def setColor(self, color):
        self.color = color
       
    # Retrieves instance variable    
    def getColor(self):    
        return self.color   
   
# Driver Code
Rodger = Dog("pug")
Rodger.setColor("brown")
print(Rodger.getColor()) 

Выход:

 коричневый

Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.

Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.