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