파이썬에서 help 명령어를 쳐보면 가끔 언더바(_)가 붙은 메서드들을 본 적이 있을 것이다.
class list(object)
| list(iterable=(), /)
|
| Built-in mutable sequence.
|
| If no argument is given, the constructor creates a new empty list.
| The argument must be an iterable if specified.
|
| Methods defined here:
|
| __add__(self, value, /)
| Return self+value.
|
| __contains__(self, key, /)
| Return key in self.
|
| __delitem__(self, key, /)
| Delete self[key].
|
| __eq__(self, value, /)
| Return self==value.
|
| __ge__(self, value, /)
| Return self>=value.
...
pop(self, index=-1, /)
| Remove and return item at index (default last).
|
| Raises IndexError if list is empty or index is out of range.
|
| remove(self, value, /)
| Remove first occurrence of value.
|
| Raises ValueError if the value is not present.
|
| reverse(self, /)
| Reverse *IN PLACE*.
|
| sort(self, /, *, key=None, reverse=False)
| Sort the list in ascending order and return None.
|
| The sort is in-place (i.e. the list itself is modified) and stable (i.e. the
| order of two equal elements is maintained).
|
| If a key function is given, apply it once to each list item and sort them,
| ascending or descending, according to their function values.
|
| The reverse flag can be set to sort in descending order.
위는 리스트를 구성하는 항목들이다.
예를 들어, __ge__
와 pop
모두 리스트 자료형에서 사용할 수 있는 메서드지만 언더바가 붙은 것들은 클래스 내부에서만 사용하는 메서드이다.
다시 말해, 사용자가 특별히 외부에서 호출할 일이 없다는 소리.
코딩의 기초.
print("hello world!")
위 코드의 동작 과정을 엄밀히 서술하자면 print라는 함수가 "hello world!"라는 string 클래스의 __str__
메서드를 호출하기 때문에 발생한다.
예를 들어, 나만의 클래스를 만들어 보자.
class Temp:
def __init__(self,string) -> None:
self.string = string
def __str__(self):
return self.string
if __name__ == '__main__':
temp = Temp("hello world!")
print(temp)
Temp
Class로 temp
instance를 생성했다.
그리고 temp
를 print로 찍으면
Temp
클래스의 __str__
메서드가 실행되고
이에 따라 파라미터로 받은 "hello world!"가 반환되며
터미널엔 hello world!가 찍힌다.
이와 비슷한 예로, len()은 __len__
에 대치되고
for은 __iter__
에 대치된다.
따라서
lst = [0,1,2,3,4]
print(len(lst))
print(lst.__len__())
위 코드는 동일한 결과값인 5를 내뱉는다.