Search

Python 06. Python Class - Intermediate

Created at
2018/10/07
Updated at
2021/01/21
Tags
Keywords
3 more properties
목차

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기⟫ 수업자료