Machine Learning/Tensorflow

10. class

728x90

01. 클래스(CLASS: 반, 학급, 그룹)

- class: 개발자가 선언하는 새로운 데이터 타입
- 
객체: 개발자가 선언한 class가 메모리 할당을 받아서 사용 할 수 있는 상태
- 
객체 생성시 일반적인 oop언어는 new를 사용하나 파이썬은 생략함, new 선언시 에러발생.
- class
의 구성 요소
  . 
변수: 데이터, 필드, property
  . 
함수: 메소드, 변수를 처리하는 로직 구현

1. 클래스 멤버: 클래스명으로 사용되는 변수, 모든 객체들이 공유함

- 변수 선언시 초기값을 선언해야합니다.

 /python/notebook/oop/Class1.ipynb

class Class1:
    year = 0
    product = ''
    price = 0
    dc = 0
    service = False
 
.....
if __name__ == '__main__':    
    Class1.year = 2017  # static적인 방법, 클래스명으로 접근
    Class1.product = 'SSD512'
    Class1.price = 200000
    Class1.dc = 3.5
    Class1.service = False
 
    print(Class1.year)
    print(Class1.product)
    print(Class1.price)
    print(Class1.dc)
    print(Class1.service)

 

2. 생성자, 소멸자

- 생성되는 객체의 인스턴스 변수를 초기화하는 역할을 하며 자동으로 호출되며 생략 가능
- 
소멸자는 객체가 메모리에서 소멸할 때 자동으로 호출되며 생략 가능

 /python/notebook/oop/Class1.ipynb 

class Nation:
    def __init__(self, code='KOR'):  # 생성자
        self.count = 0
        self.code = code
        print('객체가 메모리에 생성되었습니다.')

    def __del__(self):  # 소멸자
        print('객체가 메모리에서 소멸되었습니다.')

    def getNation(self, code):
        self.count = self.count + 1
        str1 = ""  # 지역 변수
        if code == "KOR":
            str1 = "한국"
        elif code == "JAP":
            str1 = "일본"
        elif code == "CHA":
            str1 = "중국"

        return str1

 

02. Class의 import

- 'oop' 패키지를 추가하고 클래스를 생성 할 것
- class 
이름과 저장 파일명(모듈명)이 달라도 상관없음.
- 
클래스명과 대소문자 달라도 상관 없음.

 /python/notebook/oop/GDPData.ipynb
   /python/notebook/oop/GDPData.py

class GDPData:
    def __init__(self):
        self.count = 0
        print('객체가 메모리에 생성되었습니다.')
            
    def __del__(self):
        print('객체가 메모리에서 소멸되었습니다.')    
        
    def getNation(self, code):
        self.count = self.count + 1
        str1 = ""  # 지역 변수
        if code == "KOR":
            str1 = "한국"
        elif code == "JAP":
            str1 = "일본"
        elif code == "CHA":
            str1 = "중국"
        
        return str1

    def getGDP(self, code):
        self.count = self.count + 1
        gdp = 0   # 지역 변수
        if code == "KOR":
            gdp = 28738
        elif code == "JAP":
            gdp = 37539
        elif code == "CHA":
            gdp = 6747
        
        return gdp

▷ 클래스 사용
- /python/notebook/GDPDataUse.ipynb  <-- 
패키지 외부에 선언해야 인식됨.
- ERROR: /python/notebook/oop/GDPDataUse.ipynb