Анатомія класу: конструктор __init__

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

George Boorman

Curriculum Manager, DataCamp

Методи й атрибути

  • Методи — це визначення функцій у класі
  • self як перший аргумент
  • Визначайте атрибути через присвоєння
  • Звертайтесь до атрибутів у класі як self.___
  • Виклик багатьох методів може бути незручним!
class MyClass:
    # function definition in class
    # first argument is self
    def my_method1(self, other_args...):
        # do things here

def my_method2(self, my_attr): # attribute created by assignment self.my_attr = my_attr ...
Вступ до обʼєктно-орієнтованого програмування в Python

Конструктор

  • Додавайте дані до об'єкта під час створення
  • Конструктор __init__() викликається щоразу, коли створюється об'єкт
    • Викликається автоматично завдяки синтаксису __methodname__
class Customer:
    def __init__(self, name):
        # Створити атрибут .name і задати його з параметра name
        self.name = name
        print("The __init__ method was called")
Вступ до обʼєктно-орієнтованого програмування в Python

Конструктор

# __init__ викликається неявно 
cust = Customer("Lara de Silva")   
print(cust.name)
The __init__ method was called
Lara de Silva
Вступ до обʼєктно-орієнтованого програмування в Python

Атрибути в методах

class MyClass:
    def my_method1(self, attr1):
        self.attr1 = attr1
        ...

    def my_method2(self, attr2):        
        self.attr2 = attr2
        ...

obj = MyClass() # attr1 створено obj.my_method1(val1) # attr2 створено obj.my_method2(val2)

Атрибути в конструкторі

class MyClass:
    def __init__(self, attr1, attr2):
        self.attr1 = attr1
        self.attr2 = attr2
        ...

# Усі атрибути створено obj = MyClass(val1, val2)
  • Зазвичай варто використовувати конструктор
  • Атрибути створюються під час створення об'єкта
  • Код зручніший у використанні та підтримці
Вступ до обʼєктно-орієнтованого програмування в Python

Додайте аргументи

class Customer:
    # Додайте аргумент balance
    def __init__(self, name, balance): 

self.name = name # Додайте атрибут balance self.balance = balance print("The __init__ method was called")
Вступ до обʼєктно-орієнтованого програмування в Python

Додайте параметри

# __init__ викликається
cust = Customer("Lara de Silva", 1000)
print(cust.name)
print(cust.balance)
The __init__ method was called
Lara de Silva
1000
Вступ до обʼєктно-орієнтованого програмування в Python

Типові аргументи

class Customer:
    # Встановіть типове значення для balance
    def __init__(self, name, balance=0):
        self.name = name
        # Присвойте новий атрибут
        self.balance = balance
        print("The __init__ method was called")
Вступ до обʼєктно-орієнтованого програмування в Python

Типові аргументи

# Не задавайте balance явно
cust = Customer("Lara de Silva")

print(cust.name) # Атрибут balance все одно створено print(cust.balance)
The __init__ method was called
Lara de Silva
0
Вступ до обʼєктно-орієнтованого програмування в Python

Найкращі практики

1. Ініціалізуйте атрибути в __init__()
Вступ до обʼєктно-орієнтованого програмування в Python

Найкращі практики

1. Ініціалізуйте атрибути в __init__()
2. Найменування

CamelCase для класів, lower_snake_case для функцій і атрибутів

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

Найкращі практики

1. Ініціалізуйте атрибути в __init__()
2. Найменування

CamelCase для класу, lower_snake_case для функцій і атрибутів

3. Залишайте self як self
class MyClass:
    # Це працює, але не рекомендовано
    def my_method(george, attr):
        george.attr = attr
Вступ до обʼєктно-орієнтованого програмування в Python

Найкращі практики

1. Ініціалізуйте атрибути в __init__()
2. Найменування

CamelCase для класу, lower_snake_case для функцій і атрибутів

3. self — це self
4. Використовуйте докстрінги
class MyClass:
    """Цей клас нічого не робить"""
    pass
Вступ до обʼєктно-орієнтованого програмування в Python

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

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

Preparing Video For Download...