목차
1. Getter & Setter
•
객체의 내부 변수에 접근할때 특정 로직을 거쳐서(특정 함수를 이용, 특정 코드를 거쳐서) 접근할수 있도록 하는 방법
•
property와 decorator 두 가지 방법으로 구현이 가능
•
OOP의 캡슐화, 은닉화를 구현하기 위해 쓰임
1.1 Property 함수 이용
1.2 decorator 이용
2. Private
2.1 Private
•
위 코드처럼 생성자 함수에 변수를 선언하면 객체를 만들었을 때 getter를 통하지 않고 접근이 가능
•
python에서는 mangling이라는 방법을 사용하여 class 내부 변수에 다이렉트로 접근하지 못하게 하는 방법으로 private을 구현
◦
변수명 앞에 __ 를 붙여서 변수를 선언
•
완벽한 방법은 아니고 변수명 앞에 _(클래스명)을 붙이면 접근이 가능
•
객체의 변수에 접근하기 위해서 (객체명).(변수명) 으로 접근이 가능
2.2 Private function
•
class 내에서만 사용되는 함수의 이름 중복이 우려될 때 사용
•
mangling 사용
•
거의 사용되지는 않음
3. is a & has a
•
is a: A is a B의 개념은 A는 B임을 의미
◦
상속을 사용하여 클래스를 선언하는 개념
•
has a: A has a B는 A는 B 객체를 가지고 있음을 의미
◦
클래스의 변수를 객체로 받아서 클래스를 선언하는 개념
•
같이 혼합해서도 사용 가능
3.1 is a
class B():
def __init__(self, name, email):
self.name = name
self.email = email
class A(B):
def about(self):
print(self.name, self.email)
person = A("Hyeshin", "hyeshinoh@gmail.com")
person.about()
Python
복사
Hyeshin hyeshinoh@gmail.com
3.2 has a
class Name():
def __init__(self, name):
self.name_str = name
class Email():
def __init__(self, email):
self.email_str = email
class Person():
def __init__(self, name, email):
self.name_obj = name
self.email_obj = email
def about(self):
print(self.name_obj.name_str, self.email_obj.email_str)
# object가 들어오고 오브젝트의 name값
name = Name("Hyeshin")
email = Email("hyeshinoh@gmail.com")
p = Person(name, email)
p.about()
Python
복사
Hyeshin hyeshinoh@gmail.com
4. Magic(Special) Method
•
compare
◦
__eq__ : ==
◦
__ne__ : !=
◦
__lt__ : <
◦
__gt__ : >
◦
__le__ : <=
◦
__ge__ : >=
•
calculate
◦
__add__ : +
◦
__sub__ : -
◦
__mul__ : *
◦
__floordiv__ : //
◦
__truediv__ : /
◦
__mod__ : %
◦
__pow__ : **
•
__repr__
•
__str__
•
__len__
4.1 __eq__
•
text 변수를 저장하고 객체가 같은지 비교하는 코드
4.2 __ne__
•
list의 remove 함수는 한개의 value만 삭제
•
리스트에 있는 값 여러개 삭제하는 코드
4.3 __add__
4.4 __str__, __repr__
•
__str__은 print로 객체를 출력할때 출력되는 문자열 데이터를 정의
◦
객체에 대한 정보를 문자열로 출력 (사용자용)
◦
객체의 변수 값을 나열하는 형태로 표현
•
__repr__은 ipython에서 객체를 출력할때 나오는 문자열을 정의
◦
객체에 대한 정보를 문자열로 출력 (개발자용)
◦
클래스명, 생성자변수이름, 변수 값을 나타냄
위 내용 전체를 jupyter notebook으로 보려면,
참고자료
•
패스트캠퍼스, ⟪데이터사이언스스쿨 8기⟫ 수업자료