티스토리 뷰
PL/Python
[Python] 함수 제일 첫번째 인자 self의 의미, new와 init함수의 의미, underbar(_) 변수의 의미
SweetDev 2021. 5. 30. 18:20함수 제일 첫번째 인자 self의 의미
- 파이썬 메서드의 첫번째 파라미터명은 관례적으로 self라는 이름을 사용합니다.
- 호출 시 호출한 객체 자신이 전달되기 때문에 self라는 이름을 사용하게 된 것
- 이를 이용하여 클래스에서 바로 메소드로 접근하면서 위에서 할당한 Flight의 객체 f를 파라미터로 전달함으로써 똑같은 결과값 얻습니다.
# 메소드 작성하기
class Flight:
def number(self):
return 'SN060'
이거랑
# 인스턴스의 메소드 사용
>>> from airtravel import Flight
>>> f = Flight()
>>> f.number()
'SN060'
이거랑 같다.
# 클래스의 내부에 self 파라미터가 포함되는데 이를 이용한 접근법
>>> Flight.number(f) # f는 Flight객체
'SN060'
new와 init함수의 의미
- 생성자로 객체생성을 호출받으면 먼저 __new__ 를 호출하여 객체를 생성할당하고, __new__ 메소드가 __init__메소드를 호출하여 객체에서 사용할 초기값들을 초기화하게됩니다.
- 간혹 여러 자료들을 보면.. __init__ 메소드를 생성자로 소개하는 경우가 있는데, 그렇지 않습니다.
- 자료 https://stackoverflow.com/questions/6578487/init-as-a-constructor
- 일반적으로 파이썬에서 클래스를 만들 시 __init__ 메소드만 오버라이딩하여 객체초기화에만 이용합니다.
underbar(_) 변수의 의미
- 아래의 코드에서 self._number 로 할당했는데 변수명의 _ 의 의미는 다음과 같습니다.
- 내부적으로 사용되는 변수
- 파이썬기본 키워드와 충돌을 피하기 위한 변수
- _ 관련 네이밍컨벤션에 관련한 자료
- Python은 기본적으로 다른언어에 있는 접근제어자(public, private, protected)가 없음
- 기본적으로 모두 Public
- 위의 예처럼 _ 언더바 한개는 내부적으로만 사용되는 변수다라고 알리지만, 사실 값을 얻어올수도 있고 할당도 가능합니다. 사람들이 코딩컨벤션으로 파이썬을 쓰는 사람들이면 내부적인 변수구나 하고 알고 있을 뿐..
- 원천적인 접근을 막으려면 __ 더블 언더바를 사용하면 막을 수 있습니다.
- 코드를 다시 변경해보겠습니다. _name 변수를 __name으로 변경하였습니다.
- 파이썬은 메소드 오버로딩이 없습니다.
- null은 None이다.
[출처]
'PL > Python' 카테고리의 다른 글
[Python] str안에 alphabet 각각의 개수 구하기 (0) | 2021.07.03 |
---|---|
[Python] list에서 모든 조합 구하기 (0) | 2021.06.27 |
파이썬 string reverse 하기 (0) | 2021.01.28 |
파이썬 list에서 value 갖고 index찾기 (0) | 2021.01.27 |
Python 정수 자릿수마다 잘라서 리스트에 넣기 (0) | 2021.01.25 |