Методи класу

Вступ до обʼєктно-орієнтованого програмування в Python

George Boorman

Curriculum Manager, DataCamp

Методи

class Employee:
    def __init__(self, name, salary):
        self.name = name
        self.salary = salary

    def give_raise(self, amount):
        self.salary += amount


# Унікальні значення атрибутів emp_one = Employee("John", 40000)
emp_one.give_raise(5000) print(emp_one.salary)
45000









# Унікальні значення атрибутів emp_two = Employee("Jane", 60000)
emp_two.give_raise(5000) print(emp_two.salary)
65000
Вступ до обʼєктно-орієнтованого програмування в Python

Методи класу

  • Можна визначати методи класу
  • Їх область має бути вузькою, бо вони не використовують дані обʼєкта
class MyClass:
    # Використайте декоратор, щоб оголосити метод класу
    @classmethod

# Аргумент cls посилається на клас def my_awesome_method(cls, args...): # Логіка тут # Не можна використовувати атрибути екземпляра
# Викликайте клас, а не обʼєкт MyClass.my_awesome_method(args...)
  • Як і self, cls — це умовність; можна будь-яке слово
Вступ до обʼєктно-орієнтованого програмування в Python

Альтернативні конструктори

class Employee:
  def __init__(self, name, salary):
      self.name = name
      self.salary = salary

@classmethod def from_file(cls, filename): with open(filename, "r") as f: # Прочитати перший рядок name = f.readline().strip() # Прочитати другий рядок як ціле число salary = int(f.readline().strip())
return cls(name, salary)
  • Дозволяють альтернативні конструктори
  • __init__() може бути лише один

 

  • Використовуйте методи класу для створення обʼєктів
  • Повертаєте обʼєкт через return
  • cls(...) викликає __init__(...)
Вступ до обʼєктно-орієнтованого програмування в Python

Альтернативні конструктори

class Employee:
  def __init__(self, name, salary):
      self.name = name
      self.salary = salary
  @classmethod
  def from_file(cls, filename):
      with open(filename, "r") as f:
          name = f.readline().strip()
          salary = int(f.readline().strip())
      return cls(name, salary)  

Employee.txt

Текстовий файл, що містить імʼя John Smith і зарплату 40000

# Створіть працівника без виклику Employee()
emp = Employee.from_file("employee_data.txt")
print(emp.name)
John Smith
Вступ до обʼєктно-орієнтованого програмування в Python

Коли варто використовувати методи класу

  • Альтернативні конструктори

  • Методи, що не потребують атрибутів екземпляра

  • Обмеження до одного екземпляра (обʼєкта) класу

    • Підключення до бази даних
    • Налаштування конфігурації
Вступ до обʼєктно-орієнтованого програмування в Python

Давайте потренуємось!

Вступ до обʼєктно-орієнтованого програмування в Python

Preparing Video For Download...