Статья Автор: Омарбек Нұр-Мұхаммед

Примеры

Пример

Пример класса и создание экземпляров класса:

class Player:
    def __init__(self, name, type, fire_resistance):
        self.name = name
        self.type = type
        self.fire_resistance = fire_resistance


p1 = Player("Игрок 1", "Warrior", False)
p2 = Player("Игрок 2", "Rogue", False)
p3 = Player("Игрок 3", "Mage", True)

При создании экземпляра класса передаются значения параметров. Параметры передаются в метод __init__, где значения параметров сохраняются в атрибутах экземпляра объекта.

 

Внутри класса можно создавать такие атрибуты (свойства), которые будут одинаковы для любого экземпляра класса. Например, все игроки (воины, разбойники, маги) будут людьми. Поэтому можно создать атрибут на уровне класса, вместо того, чтобы создавать его в методе __init__:

class Player:
    race = "Человек"

    def __init__(self, name, type, fire_resistance):
        self.name = name
        self.type = type
        self.fire_resistance = fire_resistance

 

У каждого экземпляра теперь четыре свойства:

p1 = Player("Игрок 1", "Warrior", False)
p2 = Player("Игрок 2", "Rogue", False)
p3 = Player("Игрок 3", "Mage", True)

print(p1.race)  # Человек
print(p2.race)  # Человек
print(p3.race)  # Человек

 

Внутри класса можно объявлять методы (отдельные участки кода для выполнения), внутри которых можно обращаться к значениям атрибутов с помощью ключевого слова self:

class Player:
    race = "Человек"

    def __init__(self, name, type, fire_resistance):
        self.name = name
        self.type = type
        self.fire_resistance = fire_resistance

    def scream(self):
        return f"I'am {self.name}!"


p1 = Player("Игрок 1", "Warrior", False)
p2 = Player("Игрок 2", "Rogue", False)
p3 = Player("Игрок 3", "Mage", True)

print(p1.scream())  # I'am Игрок 1!
print(p2.scream())  # I'am Игрок 2!
print(p3.scream())  # I'am Игрок 3!

Пример

Пример описания класса для вычисления длины окружности через радиус:

from math import pi


class Circle():
    PI = pi

    def __init__(self, radius):
        self.radius = radius

    def get_circumference(self):
        return round(2 * self.PI * self.radius, 2)


c1 = Circle(30)
print(c1.get_circumference())  # 188.5
  • PI - атрибут класса
  • radius - атрибут объекта
  • radius=1 - значение атрибута по умолчанию
  • .get_circumference() - метод класса

 

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

from math import pi


class Circle():
    PI = pi

    def __init__(self, radius=1):
        self.radius = radius
        self.area = round(self.PI * pow(self.radius, 2), 2)

    def get_circumference(self):
        return round(2 * self.PI * self.radius, 2)


c1 = Circle(30)
print(c1.get_circumference())  # 188.5

print(c1.radius)  # 30
print(c1.area)    # 2827.43

 

Ещё один способ обращения к атрибуту класса это указание названия класса:

  • Было: self.PI
  • Стало: Circle.PI
from math import pi


class Circle():
    PI = pi

    def __init__(self, radius=1):
        self.radius = radius
        self.area = round(Circle.PI * pow(self.radius, 2), 2)

    def get_circumference(self):
        return round(2 * Circle.PI * self.radius, 2)

Такой способ явно подчёркивает, что это атрибут класса.

Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать