You are currently viewing Классы и объекты Python

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

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

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

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

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

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

class ClassName:
 # Statement-1
 .
 .
 .
 # Statement-N

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

# Python3 program to
# demonstrate defining
# a class

class Dog:
	pass

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

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

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

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

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

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

Пример:

Объявление объекта:

# 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__ method

Метод __init__ аналогичен конструкторам в C++ и Java. Конструкторы используются для инициализации состояния объекта. Как и методы, конструктор также содержит набор инструкций(т. е. инструкций), которые выполняются во время создания объекта. Он запускается, как только создается экземпляр объекта класса. Этот метод полезен для выполнения любой инициализации, которую вы хотите выполнить с вашим объектом.

# 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()

Выход:

Hello, my name is Nikhil

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

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

Определение переменной экземпляра с помощью конструктора.

# 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('\nBuzo 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("\nAccessing class variable using class name")
print(Dog.animal)	

Выход:

Rodger details:
Rodger is a dog
Breed: Pug
Color: brown

Buzo details:
Buzo is a dog
Breed: Bulldog
Color: black

Accessing class variable using class name
dog

Определение переменной экземпляра с помощью обычного метода.

# 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())

Выход:

brown