새소식

데이터분석/둘째주

파이썬 Python : 객체, Class

  • -
728x90

 

객체를 이용한 프로그램으로 객체는 속성과 기능으로 구성된다.

 

예시)

계산기 (Calculator)

└─  속성 : 숫자
└─  기능 : 덧셈, 뺄셈 , …
자동차 (Car)

└─  속성 : 색상, 길이, 가격
└─  기능 : 전진, 후진, 정지 …

 

 

 

객체는 클래스에서 생성된다.

클래스는 객체를 만들기위한 하나의 틀이다.

클래스(Class) ───▷ 자동차 (Car)
자동차 (Car) 클래스

└─  속성 : 색상, 길이, 가격
└─  기능 : 전진, 후진, 정지 …
객  
체  
생  
성  
─▶  자동자(Car)객체                                             
─▶  자동자(Car)객체
─▶  자동자(Car)객체
─▶  자동자(Car)객체


 

 

 

코드 재사용, 모듈화에 좋다..

예시)

자동차 A (CarA)
[배터리 일체형]
자동차 B (CarB)
[배터리 교체형]
자동차 C (CarC)
[배터리 충전형]


부품 결합도 높음


부품 결합도 낮음


부품 결합도 높음
 

가장 이상적인 프로그램이 될 수 있다.
 

 

 

 

728x90

 

클래스는 class 키워드와 속성(변수) 그리고 기능(함수)를 이용해서 만든다.

클래스 명은 첫글자를 대문자로 사용한다.

 

  • 클래스 선언         [  class  클래스명  ]
  • 생성자, 속성        [  def __init__ ( self, 변수명, 변수명 ) :  ]
                              [          self.변수명 = 값                           ]
                              [          self.변수명 = 값                           ]
  • 기능                     [  def  함수명 ( self ) :                            ]
                              [          실행영역                                      ]
class Car: def __init__(self, color, length): self.color = color self.length = length def doStop(self): print("STOP") def doStart(self): print("START") def printInfo(self): print(f'self.color: {self.color}') print(f'self.length: {self.length}')

 

 

반응형

객체는 클래스의 생성자를 호출한다.

객체가 생성될 때 생성자를 호출하면 __init__()가 자동 호출된다.

생성자는 자동으로 __init__ 메소드를 호출하며, 인수를 매개변수에 전달해서 객체의 변수를 초기화한다.

 

    Calculator __init__() 호출    


    Calculator() 생성자 호출    


    cal = Calculator()    
Class Calculator:
        def __init__(self):
                 print('[ Calculator ] __init__() called~!')




cal = Calculator()

 

class Car: def __init__(self, color, length): self.color = color self.length = length def doStop(self): print("STOP") def doStart(self): print("START") def printInfo(self): print(f'self.color: {self.color}') print(f'self.length: {self.length}') # 생성자 호출 # Car() car1 = Car('red', 200) car2 = Car('blue', 200) ## 객체 2개 생성됨 car1.printInfo() car2.printInfo() print(f'car1.color : {car1.color}') print(f'car1.length : {car1.length}')

 

[실습] 비행기 클래스를 만들고, 비행기 객체 5개를 생성해보자.

 

 

  • __init__ 메소드가 속성을 초기화한다.
Class Calculator: def __init__(self, num1, num2): print('[ Calculator ] __init__() called~!') self.num1 = num1 self.num2 = num2 cal = Calculator(10, 30) print(f'cal.num1 : {cal.num1}') print(f'cal.num2 : {cal.num2}')

 

Class Calculator: def __init__(self): print('[ Calculator ] __init__() called~!') self.num1 = 50 self.num2 = 200 cal = Calculator() print(f'cal.num1 : {cal.num1}') print(f'cal.num2 : {cal.num2}')

 

 

 

객체의 속성은 변경할 수 있다.

  • 객체 속성 변경       [  객체명 .  객체의 변수명  =  값  ]
class NewGenerationPC: def __init__(self, name, cpu, memory, ssd): self.name = name self.cpu = cpu self.memory = memory self.ssd = ssd def doExcel(self): print('EXCEL RUN') def doPhotoshop(self): print('PHOTOSHOP RUN') def printPCInfo(self): print(f'self.name: {self.name}') print(f'self.cpu: {self.cpu}') print(f'self.memory: {self.memory}') print(f'self.ssd: {self.ssd}') myPC = NewGenerationPC('myPC', 'i5', '16G', '256G') myPC.printPCInfo() frindPC = NewGenerationPC('frindPC', 'i7', '32G', '512G') frindPC.printPCInfo() #객체 속성 변경 myPC.cpu = 'i7' myPC.memory = '64G' myPC.ssd = '1T' myPC.printPCInfo()

 

[실습] 계산기 클래스를 만들고, 사칙연산을 실행해보자

 

 

 

 

변수는 객체의 메모리 주소를 저장하고 이를 이용해서 객체를 참조한다.

레퍼런스 변수 : 메모리 주소를 가지고 객체를 참조하는 변수

class Car: def __init__(self, color): self.color = color car1 = Car('red')
Stack Memory (스택 메모리)   Heap Memory (힙 메모리)
    객체(Object) 생성  [ Car ]
변수 [ car1 ] ── 참조 ──▶ 객체(Object)   [ Car ]
변수 [ color ] ── 참조 ──▶ [ 'red' ]
self (객체를 가리키는 참조자 역할) ── 참조 ──▶ 객체(Object)
    객체(Object)의 변수 [ color ]
   │ 참조
  ▼
[ 'red' ]

 

 

반응형

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.