Будова класу: атрибути й методи

Об'єктноорієнтоване програмування в Python

Alex Yarosh

Content Quality Analyst @ DataCamp

Базовий клас

class Customer:

# code for class goes here
pass
  • class <name>: починає визначення класу
  • код усередині class має відступи
  • використайте pass, щоб створити «порожній» клас
c1 = Customer()
c2 = Customer()
  • використайте ClassName() для створення об'єкта класу ClassName
Об'єктноорієнтоване програмування в Python

Додаємо методи до класу

class Customer:  

    def identify(self, name):   
      print("I am Customer " + name)
  • визначення методу = визначення функції всередині класу
  • використовуйте self як 1-й аргумент у визначенні методу
cust = Customer()
cust.identify("Laura")
I am Customer Laura
  • ігноруйте self, коли викликаєте метод на об'єкті
Об'єктноорієнтоване програмування в Python
class Customer:  

    def identify(self, name):   
      print("I am Customer " + name)

cust = Customer()
cust.identify("Laura")

Що таке self?

  • класи — це шаблони; як звертатися до даних конкретного об'єкта?
  • self — це представник конкретного об'єкта у визначенні класу
  • має бути першим аргументом будь-якого методу
  • Python подбає про self, коли метод викликають від об'єкта:

cust.identify("Laura") буде інтерпретовано як Customer.identify(cust, "Laura")

Об'єктноорієнтоване програмування в Python

Нам потрібні атрибути

  • Інкапсуляція: об'єднання даних із методами, що їх обробляють
  • Напр., ім'я Customer має бути атрибутом

  $$\text{\Large{Атрибути створюються через присвоєння (=) у методах}}$$

Об'єктноорієнтоване програмування в Python

Додати атрибут до класу

class Customer:  
    # set the name attribute of an object to new_name
    def set_name(self, new_name):

# Create an attribute by assigning a value self.name = new_name # <-- will create .name when set_name is called
cust = Customer()                   # <--.name doesn't exist here yet

cust.set_name("Lara de Silva") # <--.name is created and set to "Lara de Silva"
print(cust.name) # <--.name can be used
Lara de Silva
Об'єктноорієнтоване програмування в Python

Стара версія

class Customer:  



    # Using a parameter
    def identify(self, name):   
      print("I am Customer" + name)
cust = Customer()

cust.identify("Eris Odoro")
I am Customer Eris Odoro

Нова версія

class Customer:  
   def set_name(self, new_name): 
      self.name = new_name

    # Використання .name з об'єкта it*self*
    def identify(self):     
      print("I am Customer" + self.name)
cust = Customer()
cust.set_name("Rashid Volkov")
cust.identify()
I am Customer Rashid Volkov
Об'єктноорієнтоване програмування в Python

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

Об'єктноорієнтоване програмування в Python

Preparing Video For Download...