[파이썬 심화] 16. 최상위 클래스 object (다시 공부 필요)◎ Python/파이썬 심화 (책)2022. 9. 14. 20:16
Table of Contents
반응형
모든 객체지향 언어는 클래스를 만들 때 최상위 클래스를 상속하는 구조로 되어 있다. C++의 경우는 살짝 다른 것으로 알고 있지만 자바는 파이썬과 같이 최상위 클래스를 상속한다.
파이썬에서의 최상위 클래스는 object이다.
object 클래스의 내부 속성 알아보기
object 클래스는 스페셜 속성과 스페셜 메소드만으로 구성된다.
파이썬에서 제공하는 기본 클래스들을 원소로 갖는 리스트를 선언해보자.
ll = [str, int, list, tuple, type(None), object, type]
여기서 최상위 클래스 object 내의 내장 클래스로 만든 객체를 가진 경우만 추출한다.
제어문에 있는 object.__getattribute__는 점 연산에 해당하는 스페셜 메소드이다. 인자로 클래스나 속성, 메소드를 문자열로 넣고 조회하면 이름공간 내의 속성과 메소드를 조회할 수 있다.
그래서 for문을 돌리면 리스트에 저장된 클래스와 동일한 속성일 때만 출력된다.
ll = [str, int, list, tuple, type(None), object, type]
for i in dir(object):
if (type(object.__getattribute__(object, i))) in ll:
print(i)
[결과]
__class__
__doc__
최상위 클래스 object는 객체를 생성할 수 있지만 객체 내부에는 일반 속성이 없다.
객체가 가진 2개의 스페셜 속성을 조회하면 하나는 클래스 정보, 하나는 문서화 정보이다.
object 클래스 내부 메소드 알아보기
앞의 예제에서 not 예약어를 붙여 내장 클래스가 아닌 경우를 추출해보자.
ll = [str, int, list, tuple, type(None), object, type]
for i in dir(object):
if (type(object.__getattribute__(object, i))) not in ll:
print(i)
[결과]
__delattr__
__dir__
__eq__
__format__
__ge__
__getattribute__
__gt__
__hash__
__init__
__init_subclass__
__le__
__lt__
__ne__
__new__
__reduce__
__reduce_ex__
__repr__
__setattr__
__sizeof__
__str__
__subclasshook__
파이썬 프로그램 언어 책에는 초기화 함수를 생성자라고 말한다. 하지만 실제 객체를 생성하는 생성자 함수는 __new__이다. 이를 조회하면 builtin_function_or_method라는 것을 알 수 있다.
참고
- 한권으로 개발자가 원하던 파이썬 심화 A to Z, 문용준/문성혁 저
반응형
'◎ Python > 파이썬 심화 (책)' 카테고리의 다른 글
[파이썬 심화] 15. 특별한 내장 클래스 (0) | 2022.09.13 |
---|---|
[파이썬 심화] 14. 클래스와 객체 구조를 알아보자 (0) | 2022.09.07 |
[파이썬 심화] 13. 클래스 정의하기 (1) | 2022.09.06 |
[파이썬 심화] 12. 함수에 여러 가지 종류의 매개변수를 설정할 수 있다! (1) | 2022.09.05 |
[파이썬 심화] 11. 함수 정의하기 (0) | 2022.09.02 |
@Reo :: 코드 아카이브
자기계발 블로그