Python 언더바(_, __) 정리

hodu·2022년 10월 1일
0

python

목록 보기
9/17
post-thumbnail

파이썬 언더바 정리

이번 게시글에서는 파이썬 언더바에 대해 정리하도록 하겠다.

1. 언더바 한개

1.1) protected 변수로 사용한다.

  • 해당 클래스 및 해당 클래스를 상속받은 클래스에서만 접근이 가능하도록 한다. 하지만 강제하지는 않으며 접근이 가능하다.

1.2) 인터프리터에서 마지막으로 실행된 값을 가지는 변수로 이용된다

10
_*3 # 이전값인 10을 가져와서 3을 곱해준다
# 30

1.3) 변수값을 굳이 이용할 필요가 없을 때 사용한다.

# _는 해당 위치를 무시한다.
l = [1,2,3,4]
a, b, _, d = l
# 하지만 변수로 생각하고 print 해보면 값이 나옴
print(a,b,_,d)

# 여러개 무시
a, *_, b = l
# 마찬가지로 값이 나옴
print(a, *_, b)

# 반복문에서도 사용 가능
for _ in range(10):
	pass

# 숫자 자릿수
a = 100000
b = 100_000
c = 1_00_000

print(a,b,c) # 모두 100000이 나옴

1.4) 언더바를 변수 뒤에 붙일 때는 예약어를 변수로 사용하고 싶을 떄 사용한다.

if_ = 10

1.5) 언더바 한개를 함수 앞에 붙일 때는 해당 함수를 사용하지 말라고 권하는 문법.

권유하는 문법이기 때문에 직접 가져오거나 호출할 수 있음

# greeting.py
def _hello(): 
	print('do not use')
    
_hello()
# NameError: name '_hello' is not defined

# 직접 호출하면 사용핤 수 있다.
from greeting import _hello
_hello()
# do not use

2. 언더바 두개 __

2.1) 앞에 언더바 두개 : 외부에서 클래스 속성값에 접근할 수 없게 할 때(private)

class Car:
	def __init__(self, name, price):
    	self.name = name
        self.price = price
        self.__출시일 = "2023-01-01" # 접근 불가능한 private

k10 = Car('k10', 5000)
print(k5.__출시일) # 에러

2.2) 앞에 언더바 두개 : 오버라이딩 방지

class Car:
	def __init__(self, name, price):
    	self.name = name
        self.price = price
        self.__출시일 = "2023-01-01" # 접근 불가능한 private
        
class New_car:
	def __init__(self):
    	super().__init__()
        self.name = '새로운차'
        self.price = 3000
        self.__출시일 = "2023-12-31"
        
new_car = New_car()
print(new_car.__출시일)
# AttributeError: 'New_car' object has no attribute '__출시일'

2.3) 앞 뒤로 언더바 두개일 경우는 매직메서드

매직메서드는 아래 링크에서 확인할 수 있다.
https://www.tutorialsteacher.com/python/magic-methods-in-python

profile
안녕 세계!

0개의 댓글