Классы и метод __init__
Определяйте классы, создавайте объекты и инициализируйте атрибуты.
«Классы и метод __init__» — бесплатный урок Python Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 4 уроков всего.
Определение класса
Используйте ключевое слово class, чтобы определить класс. По соглашению имена классов записываются в стиле CapWords.
class Dog:
pass
fido = Dog()
print(type(fido)) # <class '__main__.Dog'>Метод __init__
__init__ автоматически вызывается при создании объекта. Используйте его для настройки атрибутов экземпляра.
class Dog:
def __init__(self, name, breed):
self.name = name
self.breed = breed
fido = Dog("Fido", "Labrador")
print(fido.name) # FidoОбъяснение self
self ссылается на текущий экземпляр. Он должен быть первым параметром каждого метода экземпляра. Python передаёт его автоматически.
class Counter:
def __init__(self):
self.count = 0
def increment(self):
self.count += 1
c = Counter()
c.increment()
print(c.count) # 1Несколько экземпляров
У каждого экземпляра есть собственная копия атрибутов экземпляра, заданных в __init__.
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
p1 = Point(1, 2)
p2 = Point(5, 7)
print(p1.x, p2.x) # 1 5Значения параметров по умолчанию в __init__
Задавайте параметрам __init__ значения по умолчанию, чтобы сделать некоторые аргументы необязательными.
class Circle:
def __init__(self, radius=1.0):
self.radius = radius
c1 = Circle()
c2 = Circle(5)
print(c1.radius, c2.radius) # 1.0 5Методы экземпляра
Методы, определённые внутри класса, работают с экземпляром через self.
class Rectangle:
def __init__(self, w, h):
self.w = w
self.h = h
def area(self):
return self.w * self.h
r = Rectangle(4, 5)
print(r.area()) # 20Добавление атрибутов после создания
Вы можете добавлять атрибуты экземпляру после его создания, но лучше объявлять их все в __init__.
class Person:
def __init__(self, name):
self.name = name
p = Person("Alice")
p.age = 30 # added after creation
print(p.name, p.age)Возвращаемое значение __init__
__init__ должен возвращать None. Возврат любого другого значения вызывает TypeError.
class Broken:
def __init__(self):
return 42 # TypeError!
# Correct
class OK:
def __init__(self):
self.value = 42
# implicit return NoneПроверка типа экземпляра
Используйте isinstance(), чтобы проверить, является ли объект экземпляром класса.
class Animal:
pass
class Dog(Animal):
pass
d = Dog()
print(isinstance(d, Dog)) # True
print(isinstance(d, Animal)) # TrueАтрибут __dict__
Каждый экземпляр хранит свои атрибуты в словаре __dict__.
class Book:
def __init__(self, title, pages):
self.title = title
self.pages = pages
b = Book("Python 101", 300)
print(b.__dict__) # {'title': 'Python 101', 'pages': 300}Удаление атрибутов
Используйте del, чтобы удалить атрибут экземпляра во время выполнения программы.
class Config:
def __init__(self):
self.debug = True
self.version = "1.0"
cfg = Config()
del cfg.debug
print(hasattr(cfg, "debug")) # FalseБыстрая проверка
Каково назначение self в методах классов Python?
Повторение
Классы служат шаблонами для объектов. __init__ инициализирует атрибуты экземпляра, self ссылается на текущий объект, а каждый экземпляр поддерживает собственный словарь атрибутов.
Часто задаваемые вопросы
Урок «Классы и метод __init__» бесплатный?
Да — полный текст урока «Классы и метод __init__» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 4 уроков всего.
Чему я научусь в уроке «Классы и метод __init__»?
Определяйте классы, создавайте объекты и инициализируйте атрибуты. Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Python Academy?
Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Классы и метод __init__»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Python Academy?
Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Классы и метод __init__
- Атрибуты экземпляра и класса
- Методы экземпляра и self
- Магические методы: __str__ и __repr__