Атрибуты классов и статические методы

Атрибуты классов и статические методы

@ProgHelpBot
  1. Атрибуты класса
  2. Статические методы

Атрибуты класса

В классе может быть определены атрибуты класса. Подобные атрибуты определяются в виде переменных уровня класса и являются общими для всех объектов класса.

[Класс].[атрибут класса]  # обращение к атрибуту класса внутри класса
[объект].[атрибут класса] # обращение к атрибуту класса у конкретного объекта вне класса

Пример:

class Person:
  default_name = "Anonymous"

  def __init__(self, name):
    if name: self.name = name
    else: self.name = Person.default_name


alex = Person("Alex")
bill = Person("")
print(alex.name, bill.name)  # Alex Anonymous

Person.default_name = "Undefined"  # изменяем атрибут класса для всех объектов
print(alex.default_name, bill.default_name)  # Undefined Undefined

bill.default_name = "Bill"  # изменяем атрибут класса только для объекта bill
print(alex.default_name, bill.default_name)  # Undefined Bill

Статические методы

Статические методы относятся к классу в целом и определяют поведение, которое не зависит от конкретного объекта. Для их определения используется аннотация @staticmethod.

class Person:
  __type = "Person"  # приватный атрибут

  @staticmethod
  def print_type():
    print(Person.__type)


alex = Person()
alex.print_type()  # Person
Person.print_type()  # Person


← Переопределение функционала базового класса

→ Класс object. Строковое представление объекта

Report Page