728x90
Introduce
인스턴스랑 메서드에 대해 정확하게 알지 못해 헷갈려서 정리를 해보겠습니다.
요약
- 클래스 = 자동차 설계도
- 인스턴스 = 실제 생상된 개별 자동차
- 메서드 = 자동차로 할 수 있는 동작들(시동 걸기, 운전하기, 정지하기 등)
1. 인스턴스(Instance)
클래스를 기반으로 생성된 실제 객체를 의미한다.
- 클래스는 설계도, 인스턴스는 이 설계도로 만든 실제 제품이라고 생각
# BrowserManager: 클래스 (설계도)
# browser1, browser2: 인스턴스 (실제 제품)
browser1 = BrowserManager() # 첫 번째 브라우저 인스턴스 생성
browser2 = BrowserManager() # 두 번째 브라우저 인스턴스 생성
# 각 인스턴스는 독립적으로 동작
browser1.navigate_to("https://google.com")
browser2.navigate_to("https://naver.com")
2. 메서드(Method)
클래스 내에 정의된 함수를 의미한다.
- 해당 클래스의 인스턴스가 할 수 있는 동작들을 정의
메서드 사용
browser = BrowserManager()
browser.navigate_to("https://google.com") # navigate_to 메서드 호출
element = browser.find_element_safe(By.ID, "search") # find_element_safe 메서드 호출
3. 인스턴스명이랑 메서드명은 어떻게 정하는가?
랜덤 아님 xx, 의미와 목적을 반영하여 명명규칙(Convention)에 따라 지어진다.
일단 클래스명부터 어떻게 정하는가?
1. 클래스명: BrowserManager
- 브라우저를 관리하는 클래스라는 의미
- 파스칼케이스(PascalCase) 사용: 각 단어의 첫 글자를 대문자로
- 클래스는 보통 명사로 명명
2. 인스턴스 변수들:
self.options # 브라우저 옵션 설정을 담는 변수
self.driver # 웹드라이버 인스턴스를 담는 변수
self.wait # 대기 설정을 담는 변수
- 해당 변수가 담당하는 역할을 나타내는 명사 사용
- 스네이크 케이스(snake_case) 사용
- 메서드명들:
def _setup_options() # 옵션을 설정하는 private 메서드
def _setup_driver() # 드라이버를 설정하는 private 메서드
def navigate_to() # 페이지로 이동하는 public 메서드
def find_element_safe() # 안전하게 요소를 찾는 public 메서드
def click_safe() # 안전하게 클릭하는 public 메서드
def cleanup() # 리소스를 정리하는 public 메서드
- 동작을 설명하는 동사로 시작
- private 메서드는 앞에 언더스코어(_) 추가
- 스네이크 케이스 사용
- 메서드의 기능을 명확히 설명하는 이름 사용
- 매개변수명:
headless: bool # UI 표시 여부를 나타내는 불리언 값
url: str # 이동할 URL 문자열
by: By # 요소를 찾을 방법
value: str # 요소를 찾을 때 사용할 값
- 역할을 명확히 나타내는 명사 사용
- 타입 힌트를 추가하여 어떤 타입의 값이 와야 하는지 명시
그럼 왜 명명 규칙을 따르는지?
- 코드의 가독성 향상
- 다른 개발자가 코드를 이해하기 쉽다
- 유지보수 용이
- 버그 발생 가능성이 줄어든다.
4. 어떻게 사용되는가?
- 구성 요소 분석
def __init__(self, headless: bool = False):
self.options = self._setup_options(headless)
- self : 현재 클래스 인스턴스를 가리킨다.
- options : 인스턴스 변수로, 브라우저 설정을 저장한다.
- _setup_options : 브라우저 설정을 초기화하는 메서드이다.
- headless : 이 메서드에 전달되는 매개변수이다.
- 실제 동작
def _setup_options(self, headless: bool) -> Options:
options = Options() # 크롬 옵션 객체 생성
# 다양한 브라우저 옵션 설정
options.add_argument('user-agent=Mozilla/5.0...')
options.add_argument('--disable-blink-features=AutomationControlled')
if headless: # headless가 True면
options.add_argument('--headless') # 헤드리스 모드 활성화
return options # 설정된 옵션 반환
- -> 화살표는 Python의 타입 힌팅에서 함수의 반환 타입을 나타낸다.
- -> Options : 이 함수는 Options 타입을 반환한다는 의미
타입 힌팅의 장점:
- 코드의 가독성 향상
- IDE의 자동 완성 기능 지원
- 타입 관련 버그를 사전에 발견 가능
- 코드 문서화 효과
반응형