Классы и объекты
@ProgHelpBotКлассы и объекты
Класс представляет некоторую сущность. Конкретным воплощением класса является объект. Класс определяется с помощью ключевого слова class. Имя класса принято писать с большой буквы.
class [Название класса]: [атрибуты класса] [методы класса] [объект класса] = [Название класса]()
Внутри класса определяются его атрибуты, которые хранят различные характеристики класса, и методы - функции класса.
После создания класса можно определить объекты этого класса. Для создания объекта применяется специальная функция - конструктор, которая называется по имени класса и которая возвращает объект класса.
class Person: pass alex = Person() bill = Person()
В данном случае в классе не определяется никаких методов или атрибутов. Однако поскольку в нем должно быть что-то определено, то в качестве заменителя функционала класса применяется оператор pass.
Методы класса
Методы класса фактически представляют функции, которые определенны внутри класса и которые определяют его поведение.
class [Класс]:
def [метод](self):
[инструкции]
[объект] = [Класс]()
[объект].[метод]()
При определении методов следует учитывать, что они должны принимать в качестве первого параметра ссылку на текущий объект, который согласно условностям называется self. Через эту ссылку внутри класса мы можем обратиться к функциональности текущего объекта. Но при самом вызове метода этот параметр не учитывается.
class Person:
def say(self, message):
print(f"Hello. {message}")
alex = Person()
alex.say("How are you?") # Hello. How are you?
self
Через ключевое слово self можно обращаться внутри класса к функциональности текущего объекта.
self.[атрибут] self.[метод]
Пример:
class Person:
def say(self, message):
print(message)
def say_hello(self):
self.say("Hello")
alex = Person()
alex.say_hello() # Hello
Конструкторы
Для создания объекта класса используется конструктор. Каждый класс по умолчанию имеет конструктор без параметров.
class Person: pass alex = Person() # конструктор без параметров
Можно явным образом определить в классах конструктор с помощью специального метода, который называется __init__().
class Person:
def __init__(self):
print("Создание объекта")
alex = Person() # Создание объекта
Атрибуты объекта
Атрибуты хранят состояние объекта. Для определения, установки и взаимодействия с атрибутами внутри класса применяется слово self.
class Person:
def __init__(self, name):
self.name = name
self.age = 0
def print_info(self):
print(f"Name: {self.name}, age: {self.age}")
alex = Person("Alex")
print(alex.name) # Alex
alex.age = 18
alex.print_info() # Name: Alex, age: 18
Атрибуты объекта можно определять динамически и вне кода описания класса.
class Person:
def __init__(self, name):
self.name = name
self.age = 0
alex = Person("Alex")
alex.company = "Google"
print(alex.company) # Google