일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 자료구조
- 재미져
- Ai
- 파이썬
- 기초통계
- 리뷰
- 코딩테스트
- 빅데이터
- 성실히
- 2021
- yolo
- 열심히
- SQL
- leetcode
- 부트캠프
- python
- 매일매일
- bootcamp
- selenium
- pandas
- 꾸준히
- 독서
- 노마드코더
- Codestates
- JavaScript
- 선형회귀
- 주간보고
- 코드스테이츠
- 딥러닝
- MYSQL
- Today
- Total
코딩일기
[PYTHON 6] 객체지향 프로그래밍 {mro, isinstance , issubclass}(feat. Codestates _AI_BootCamp, 부트캠프) 본문
[PYTHON 6] 객체지향 프로그래밍 {mro, isinstance , issubclass}(feat. Codestates _AI_BootCamp, 부트캠프)
daje 2021. 3. 17. 11:50
안녕하십니까 다제입니다.
오늘은 객체지향 프로그래밍을 공부 할때 자주 사용되는 메소드 중
①mro, ②isinstance, ③issubclass를 알아보고 넘어가도록 하겠습니다.
1. mro 메소드
저희는 pandas를 공부할 때 궁금한 함수를 help 또는 shift + tab을 눌러서 상세한 설명을 볼 수 있었습니다.
그런데, 매번 이렇게 알 수 없고 클래스만 확인하고 싶을 때가 있습니다. 이럴 때 사용할 수 있는 메소드가 mro입니다.
객체지향 프로그래밍1에서 살펴봤던 간단한 코드를 가지고 와서 예시를 들어드리겠습니다.
class User:
def __init__(self, name, email, password) :
self.name = name
self.email = email
self.password = password
def student(self):
pass
def __str__(self):
pass
class college(User):
pass
user1 = User("홍길동", "123@gmail.com", "123456")
print(user1.name, user1.email, user1.password)
# 출력값 : 홍길동 123@gmail.com 123456
print(User.mro())
# 출력값 : [<class '__main__.User'>, <class 'object'>]
print(college.mro())
# 출력값 : [<class '__main__.college'>, <class '__main__.User'>, <class 'object'>]
위 코드에서 보시는 것과 같이 User에 대한 mro()를 실행하면 User 자신과 파이썬으로부터 상속된 object class 있습니다.
(Python의 모든 것은 객체이기 때문에 object를 상속받았다고 생각하시면 됩니다.)
college는 User로부터 상속을 받았기 때문에 college 자신과 상속받은 User, object가 있는 것을 확인 하실 수 있습니다.
또한, college(User)라고 쓰여있는 모습을 보실 수 있는데요
위와 같은 방법으로 클래스가 클래스를 상속 받을 수 있으며, 이걸 오버라이딩이라고 합니다.
2. isinstance 함수
-. isinstance 함수 : 어떤 인스턴스가 주어진 클래스의 인스턴스인지를 알려주는 함수
-. isinstance 함수의
- 첫 번째 파라미터에는 검사할 인스턴스의 이름
- 두 번째 파라미터에는 기준 클래스의 이름
- 기준 클래스의 인스턴스로 있다면 True, 없다면 False로 return 됨
아래 코드로 살펴보시고 어떤 값이 True 또는 False일지 생각해보시면 좋을 것 같습니다.
print(isinstance(user1.name, User))
print(isinstance(user1, User))
print(isinstance("홍길동", User))
정답은 False, True, False로 출력이 됩니다.
위에 user1이라는 인스턴스를 만드신거 기억이 나시죠?
바로 코드를 복사하셔서 실습을 진행하보시면 제가 말씀드린대로 출력이 되십니다.
즉, user1이 User에 대해 상속을 받는다는 사실을 인지하는 것이 매우 중요합니다!
3. issubclass 함수
-. issubclass 함수 : 한 클래스가 다른 클래스의 자식 클래스인지를 알려주는 함수
-. issubclass 함수의
- 첫 번째 파라미터로 검사할 클래스의 이름
- 두 번째 파라미터에는 기준이 되는 부모 클래스의 이름
- 자식 클래스에 해당되면 True 아니면 False로 값이 return 됨
위와 같이 몇가지 예시를 아래 코드로 적어드릴테니 무엇이 True일지 맞춰보세요
print(issubclass(college, User))
print(issubclass(User, User))
print(issubclass(user1, User))
정답은 False, True, True로 출력이 됩니다.
여기서 중요한 것은 자기 자신도 상속 받는 걸로 인지하는 사실입니다.
위와 같이 자주 사용되는 함수들과 오버라이딩이라는 개념에 대해서 살펴보았습니다.
상속 포스팅에서 오버라이딩에 대한 정확한 사용법 등을 추가적으로 다루겠습니다.
오늘도 방문해주셔서 감사드립니다.
좋아요! 공감! 부탁드립니다.