Анатомия класса: атрибуты и методы

Объектно-ориентированное программирование на 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

    # Using .name from the object 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...