클래스 구조: 속성과 메서드

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 사용
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 사용
    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...