728x90
반응형
* 본 포스터는 주피터 노트북에서 실행하였다.
클래스 정의
- 프로그램 상에서 사용되는 속성과 행위를 모아놓은 집합체
- 객체의 설계도 혹은 템플릿 (형틀 template)
인스턴스 정의
- 클래스로부터 만들어지는 각각의 개별적인 객체
- 서로 다른 인스턴스는 서로 다른 속성 값을 가질 수 있음
클래스 정의방법
- class라는 키워드를 써 준 후 class의 이름을 써 준다. 그 후 필요한 속성과 메소드를 파이썬 문법에 맞게 써준다
# 클래스 정의
class Cat:
def meow(self,i):
print('야옹 야옹',i)
def cow(self, t, u):
print(t+u)
- 클래스 내부에서 정의되어 클래스나 클래스 인스턴스가 사용하는 함수를 메소드method 혹은 멤버함수member function라 한다.
- meow() 메소드의 매개변수인 self는 자기 자신을 참조하는 변수이며 메소드의 첫 번째 매개 변수로 반드시 들어가야 한다.
nabi = Cat() #객체 생성
nabi.meow(3)
nabi.cow(3,5)
클래스에서 생성자 정의
# 클래스 정의
class Cat:
#생성자 정의
def __init__(self,name,color): #생성자
self.name=name #self가 들어가면 멤버변수
self.color=color
#메서드 (멤버함수)
def meow(self):
print('내이름은 {}, 색깔은 {} 이야~'.format(self.name, self.color))
nabi = Cat('나비','검정색')
nero = Cat('네로','흰색')
mimi = Cat('미미','갈색')
nabi.meow()
nero.meow()
mimi.meow()
Cat 객체의 문자열 표현 방식 / __str__ 메소드 적용하기
# 클래스 정의
class Cat:
#생성자 정의
def __init__(self,name,color): #생성자
self.name=name #self가 들어가면 멤버변수
self.color=color
#Cat 객체의 문자열 표현 방식
def __str__(self): #toString과 동일
return 'Cat(name=' +self.name+' 색상= '+self.color+')'
nabi = Cat('나비','검정색')
mimi = Cat('미미','갈색')
print(nabi)
print(mimi)
캡슐화 encapsulation
- 메소드와 변수를 외부에서 함부로 조작하는 것을 제한
- 데이터를 보호
- 우연히 값이 변경되는 것을 방지
# 클래스 정의
class Cat:
#생성자 정의
def __init__(self,name,age): #생성자
self.name=name #self가 들어가면 멤버변수
self.age=age
#Cat 객체의 문자열 표현 방식
def __str__(self): #toString과 동일
return 'Cat(name=' +self.name+' age= '+str(self.age)+')'
nabi = Cat('나비',3)
print(nabi)
nabi.age=4
nabi.age=-5
print(nabi)
멤버변수 값이 바뀐걸 확인할 수 있다. -> 데이터 보호(은닉/캡슐화)가 안됨
# 클래스 정의
class Cat:
#생성자 정의
def __init__(self,name,age): #생성자
self._name=name #self가 들어가면 멤버변수
self._age=age
#Cat 객체의 문자열 표현 방식
def __str__(self): #toString과 동일
return 'Cat(name=' +self._name+' age= '+str(self._age)+')'
def set_age(self, age):
if age>0:
self._age = age
def get_age(self):
return self._age
nabi = Cat('나비',3)
print(nabi)
#_ 접근 가능하지만 _로 시작하는 변수는 바로 접근하지 말자는 약속 데이터는 바로 접근 x
nabi.set_age(4)
nabi.set_age(-5)
print(nabi)
nabi.set_age(-5)는 적용이 되지 않음을 확인할수 있다. 함수를 이렇게 저장했기 때문이다!
_로 시작하는 변수는 바로 접근하지 말자는 약속이 있다. getter, setter를 이용해서 하자~!
728x90
반응형
'Language > Python' 카테고리의 다른 글
[Python/파이썬] 클래스와 특수 메소드 (0) | 2021.06.02 |
---|---|
[Python/파이썬] 객체의 동일성(identity) (0) | 2021.06.02 |
[Python/파이썬] turtle 모듈 사용하기 (0) | 2021.06.02 |
[Python/파이선] 수학 내장 함수 사용하기 / sin(), cos() (0) | 2021.06.02 |
[Python/파이썬] time 모듈로 시간 다루기 (0) | 2021.06.02 |