# Python interview 예상 질문 100개

# 1. Python에서 리스트와 튜플의 차이점은 무엇인가요?

  • 리스트는 mutable(변경 가능)한 객체인 반면, 튜플은 immutable(불변)한 객체입니다. 즉, 리스트는 수정, 추가, 삭제가 가능하지만 튜플은 한번 생성되면 변경할 수 없습니다.

# 2. 파이썬에서 deepcopyshallow copy의 차이점을 설명해주세요.

  • shallow copy는 객체의 참조를 복사합니다. 즉, 객체 내부의 내용은 복사되지 않고, 원본 객체와 복사본이 동일한 객체를 참조하게 됩니다. 반면, deepcopy는 객체 내부의 모든 객체를 재귀적으로 복사하여 원본 객체와 복사본이 서로 독립적인 객체를 갖도록 합니다.

# 3. 파이썬에서 @staticmethod@classmethod의 차이점은 무엇인가요?

  • @staticmethod는 인스턴스나 클래스 상태와 상관없이 독립적인 메소드를 정의할 때 사용됩니다. @classmethod는 첫 번째 인자로 클래스 자체를 받으며, 클래스 레벨에서 작업할 때 사용됩니다.

# 4. Python에서 self의 역할은 무엇인가요?

  • self는 클래스의 인스턴스 자신을 참조하는 변수입니다. 메소드 내에서 인스턴스의 속성에 접근하거나, 다른 메소드를 호출할 때 사용됩니다.

# 5. 파이썬에서 lambda 함수의 특징은 무엇인가요?

  • lambda 함수는 한 줄로 정의되는 익명 함수로, 짧은 코드로 간단한 함수가 필요할 때 사용됩니다. lambda는 이름이 없으며, 주로 map(), filter(), reduce()와 같은 함수에서 사용됩니다.

# 6. 파이썬에서 with 문을 사용하는 이유는 무엇인가요?

  • with 문은 파일 열기, 네트워크 연결 등 자원을 자동으로 관리하도록 돕습니다. 자원이 사용된 후 자동으로 정리되도록 하여 코드의 가독성을 높이고, 예외 처리와 자원 누수를 방지합니다.

# 7. Python에서 try, except 구문은 어떻게 사용되며, 예외 처리는 어떻게 하나요?

  • try 블록에서 예외가 발생할 가능성이 있는 코드를 작성하고, except 블록에서 예외가 발생했을 때 처리할 코드를 작성합니다. 특정 예외를 처리하거나, 모든 예외를 잡을 수 있습니다.

# 8. 파이썬에서 global 키워드의 역할을 설명해주세요.

  • global 키워드는 함수 내에서 글로벌 변수를 참조하거나 수정할 때 사용됩니다. 이를 사용하지 않으면 함수 내에서 새로운 지역 변수가 생성됩니다.

# 9. 파이썬에서 enumerate() 함수의 사용법은 무엇인가요?

  • enumerate() 함수는 리스트나 튜플과 같은 반복 가능한 객체를 인덱스와 함께 반환합니다. 주로 for 루프에서 인덱스를 추적하며, 인덱스와 값 모두를 처리할 때 유용합니다.

# 10. Python에서 join() 메소드의 사용법은 무엇인가요?

  • join() 메소드는 문자열 리스트나 튜플을 하나의 문자열로 결합할 때 사용됩니다. 구분자를 지정하여 각 항목 사이에 삽입할 수 있습니다.

# 11. 파이썬에서 __init__() 메소드의 역할은 무엇인가요?

  • __init__()는 클래스의 생성자입니다. 인스턴스가 생성될 때 자동으로 호출되며, 객체의 초기화를 담당합니다.

# 12. 파이썬에서 assert 문은 무엇을 할 때 사용하나요?

  • assert 문은 조건이 False일 때 AssertionError 예외를 발생시킵니다. 주로 디버깅이나 테스트 중에 예상한 조건이 만족되지 않으면 예외를 발생시키는 데 사용됩니다.

# 13. 파이썬에서 map() 함수의 역할은 무엇인가요?

  • map() 함수는 주어진 함수를 반복 가능한 객체의 각 항목에 적용하여 새로운 리스트를 반환합니다. lambda와 함께 자주 사용됩니다.

# 14. 파이썬에서 filter() 함수는 무엇을 하나요?

  • filter() 함수는 주어진 조건에 맞는 요소만을 필터링하여 반환합니다. 조건은 함수로 제공되며, 주로 lambda와 함께 사용됩니다.

# 15. Python에서 zip() 함수는 무엇을 하나요?

  • zip() 함수는 여러 개의 반복 가능한 객체를 하나의 튜플로 묶어줍니다. 각각의 객체에서 동일한 인덱스에 위치한 요소들을 하나의 튜플로 묶어 반환합니다.

# 16. 파이썬에서 is==의 차이는 무엇인가요?

  • is는 객체의 아이디가 같은지를 확인하고, ==는 객체의 값이 같은지를 비교합니다. is는 주로 객체의 동일성을 비교할 때 사용됩니다.

# 17. 파이썬에서 del 키워드의 역할은 무엇인가요?

  • del 키워드는 객체나 리스트 항목을 삭제할 때 사용됩니다. 변수, 리스트 항목, 딕셔너리 항목 등을 삭제할 수 있습니다.

# 18. 파이썬에서 super()의 사용법과 역할은 무엇인가요?

  • super()는 부모 클래스의 메소드를 호출할 때 사용됩니다. 상속받은 클래스에서 부모 클래스의 메소드를 오버라이드하거나 호출할 때 유용하게 사용됩니다.

# 19. 파이썬에서 @property 데코레이터는 무엇인가요?

  • @property 데코레이터는 클래스의 메소드를 속성처럼 사용할 수 있게 해줍니다. 메소드 호출 없이 객체의 속성처럼 값을 접근할 수 있도록 합니다.

# 20. 파이썬에서 __str__() 메소드의 역할은 무엇인가요?

  • __str__() 메소드는 객체를 문자열로 변환할 때 호출됩니다. 객체를 출력할 때 사용자 정의 형식을 제공하고자 할 때 사용됩니다.

# 21. 파이썬에서 os 모듈의 역할은 무엇인가요?

  • os 모듈은 운영 체제와 상호작용하는 기능을 제공합니다. 파일 경로 조작, 환경 변수 처리, 파일 시스템 조작 등의 작업을 할 수 있습니다.

# 22. 파이썬에서 collections 모듈의 주요 데이터 구조를 설명해주세요.

  • collections 모듈에는 deque, Counter, OrderedDict, defaultdict 등이 포함됩니다. 이들은 기본 데이터 구조보다 기능이 확장된 형태로, 보다 효율적인 데이터 처리를 가능하게 합니다.

# 23. 파이썬에서 re 모듈의 역할은 무엇인가요?

  • re 모듈은 정규 표현식을 처리하는 기능을 제공합니다. 문자열 검색, 치환, 패턴 매칭 등을 효율적으로 할 수 있습니다.

# 24. 파이썬에서 try-except-finally 구문의 용도는 무엇인가요?

  • finally 블록은 예외 발생 여부와 상관없이 반드시 실행됩니다. 예외가 발생하더라도 자원 해제 등의 작업을 보장하기 위해 사용됩니다.

# 25. 파이썬에서 pickle 모듈의 용도는 무엇인가요?

  • pickle 모듈은 파이썬 객체를 직렬화하여 파일로 저장하거나, 파일에서 읽어들여 객체로 복원할 수 있게 해줍니다.

# 26. 파이썬에서 multiprocessing 모듈의 역할은 무엇인가요?

  • multiprocessing 모듈은 멀티코어 시스템에서 병렬 처리를 가능하게 해주는 모듈입니다. 프로세스를 생성하여 여러 작업을 동시에 실행할 수 있습니다.

# 27. 파이썬에서 threading 모듈과 multiprocessing 모듈의 차이점은 무엇인가요?

  • threading 모듈은 멀티스레딩을 제공하며, 주로 I/O 바운드 작업에서 성능 향상을 기대할 수 있습니다. 반면, multiprocessing 모듈은 멀티프로세싱을 제공하며, CPU 바운드 작업에서 성능 향상이 필요할 때 사용됩니다.

# 28. 파이썬에서 asyncio 모듈은 어떤 역할을 하나요?

  • asyncio 모듈은 비동기 프로그래밍을 지원하는 라이브러리로, 코루틴을 사용하여 I/O 바운드 작업을 효율적으로 처리할 수 있게 도와줍니다.

# 29. 파이썬에서 __call__() 메소드의 용도는 무엇인가요?

  • __call__() 메소드는 객체를 함수처럼 호출할 수 있게 해주는 메소드입니다. 객체를 함수처럼 사용할 수 있게 하여, 코드의 가독성을 높이고 유연한 설계를 가능하게 합니다.

# 30. 파이썬에서 len() 함수의 역할은 무엇인가요?

  • len() 함수는 객체의 길이나 크기를 반환합니다. 리스트, 문자열, 튜플 등 반복 가능한 객체에서 항목의 개수를 반환합니다.

# 31. 파이썬에서 staticmethodclassmethod의 차이점은 무엇인가요?

  • staticmethod는 클래스나 인스턴스를 참조하지 않으며, 독립적인 함수처럼 동작합니다. classmethod는 첫 번째 인자로 클래스를 받으며, 클래스 레벨에서 작업을 할 때 사용됩니다.

# 32. 파이썬에서 isinstance() 함수의 역할은 무엇인가요?

  • isinstance() 함수는 객체가 특정 클래스 또는 클래스의 인스턴스인지 확인하는 데 사용됩니다. isinstance(object, class) 형태로 사용되며, 상속 관계도 고려합니다.

# 33. 파이썬에서 id() 함수는 무엇을 반환하나요?

  • id() 함수는 객체의 고유한 식별자(ID)를 반환합니다. 이 ID는 객체의 메모리 주소와 일치하며, 객체가 동일한지 비교하는 데 사용할 수 있습니다.

# 34. 파이썬에서 super() 함수는 무엇을 하나요?

  • super() 함수는 부모 클래스의 메소드를 호출할 때 사용됩니다. 상속 관계에서 부모 클래스의 메소드를 명시적으로 호출하여 코드의 재사용성을 높입니다.

# 35. 파이썬에서 __str__() 메소드의 역할은 무엇인가요?

  • __str__() 메소드는 객체를 문자열로 표현할 때 사용됩니다. print() 함수나 문자열 출력 시 호출되며, 객체를 사람이 읽을 수 있는 형식으로 변환합니다.

# 36. 파이썬에서 __repr__() 메소드의 역할은 무엇인가요?

  • __repr__() 메소드는 객체의 공식적인 문자열 표현을 반환합니다. 주로 개발자들이 객체를 디버깅할 때 사용되며, repr() 함수나 셸에서 객체를 출력할 때 호출됩니다.

# 37. 파이썬에서 open() 함수는 무엇을 하나요?

  • open() 함수는 파일을 열고, 파일 객체를 반환합니다. 파일을 읽거나 쓰기 모드로 열 수 있으며, 파일이 없으면 새로 생성할 수도 있습니다.

# 38. 파이썬에서 os.path 모듈을 사용하는 예를 들어주세요.

  • os.path 모듈은 파일 경로를 다루는 다양한 함수들을 제공합니다. 예를 들어, os.path.join()은 파일 경로를 안전하게 결합하며, os.path.exists()는 파일이나 디렉터리가 존재하는지 확인합니다.

# 39. 파이썬에서 try-except-else-finally 구문의 역할은 무엇인가요?

  • else 블록은 예외가 발생하지 않은 경우에 실행됩니다. finally 블록은 예외 발생 여부와 상관없이 항상 실행됩니다. 예외 처리 후 추가적인 처리가 필요한 경우에 유용합니다.

# 40. 파이썬에서 with 문을 사용하는 이유는 무엇인가요?

  • with 문은 리소스 관리(파일, 네트워크 연결 등) 후 자원 해제를 자동으로 처리하는 방법입니다. 파일을 열고 작업한 후 자동으로 파일을 닫는 데 유용합니다.

# 41. 파이썬에서 yield 키워드의 역할은 무엇인가요?

  • yield는 제너레이터 함수에서 값을 반환할 때 사용됩니다. yield를 사용하면 함수가 중간에 값을 반환하고, 함수 실행을 일시 중지시켜 다음 호출에서 다시 실행을 이어갈 수 있습니다.

# 42. 파이썬에서 제너레이터와 이터레이터의 차이점은 무엇인가요?

  • 제너레이터는 yield 키워드를 사용하여 값을 하나씩 반환하는 함수입니다. 이터레이터는 __iter__()__next__() 메소드를 구현한 객체로, 값을 하나씩 반환할 수 있는 객체입니다. 제너레이터는 이터레이터의 한 형태입니다.

# 43. 파이썬에서 defaultdictdict의 차이점은 무엇인가요?

  • defaultdict는 기본값을 설정할 수 있는 딕셔너리입니다. 딕셔너리에서 없는 키를 접근할 때 기본값을 반환하며, dict는 키가 없으면 KeyError를 발생시킵니다.

# 44. 파이썬에서 Counter 모듈의 사용법은 무엇인가요?

  • Counter는 컬렉션 모듈에서 제공하는 클래스이며, 항목들의 개수를 셀 수 있는 객체입니다. 예를 들어, Counter(['a', 'b', 'a']){'a' 2, 'b' 1}과 같은 결과를 반환합니다.

# 45. 파이썬에서 itertools 모듈의 사용법은 무엇인가요?

  • itertools 모듈은 반복 가능한 객체를 다루는 유용한 함수들을 제공합니다. 예를 들어, itertools.combinations()는 주어진 객체에서 가능한 모든 조합을 생성합니다.

# 46. 파이썬에서 map() 함수는 어떻게 사용하나요?

  • map() 함수는 주어진 함수를 반복 가능한 객체의 모든 항목에 적용하고 그 결과를 반환합니다. 예를 들어, map(lambda x x * 2, [1, 2, 3])[2, 4, 6]을 반환합니다.

# 47. 파이썬에서 filter() 함수는 어떻게 사용하나요?

  • filter() 함수는 주어진 함수의 조건을 만족하는 항목만 필터링하여 반환합니다. 예를 들어, filter(lambda x x > 0, [-1, 0, 1])[1]을 반환합니다.

# 48. 파이썬에서 reduce() 함수는 어떻게 사용하나요?

  • reduce() 함수는 주어진 함수를 반복적으로 적용하여 단일 값을 반환합니다. 예를 들어, reduce(lambda x, y x + y, [1, 2, 3])6을 반환합니다.

# 49. 파이썬에서 argskwargs의 차이점은 무엇인가요?

  • *args는 위치 기반 인수들을 튜플 형태로 받으며, kwargs는 키워드 인수들을 딕셔너리 형태로 받습니다. args는 위치 인수로, kwargs는 이름 인수로 사용됩니다.

# 50. 파이썬에서 selfcls의 차이점은 무엇인가요?

  • self는 인스턴스 메소드에서 사용되며, 객체 자신을 참조합니다. cls는 클래스 메소드에서 사용되며, 클래스 자신을 참조합니다.

# 51. 파이썬에서 함수의 기본값 인수를 정의할 때의 주의사항은 무엇인가요?

  • 기본값 인수로 가변 객체(리스트, 딕셔너리 등)를 사용하지 않는 것이 좋습니다. 기본값 인수는 함수 정의 시 한 번만 평가되므로, 가변 객체를 기본값으로 사용하면 의도치 않은 동작이 발생할 수 있습니다.

# 52. 파이썬에서 sorted() 함수는 어떻게 사용하나요?

  • sorted() 함수는 반복 가능한 객체를 정렬하여 새로운 리스트로 반환합니다. 기본적으로 오름차순 정렬되며, reverse=True로 내림차순 정렬할 수 있습니다.

# 53. 파이썬에서 any()all() 함수의 차이점은 무엇인가요?

  • any() 함수는 반복 가능한 객체에서 하나라도 True인 값이 있으면 True를 반환합니다. all() 함수는 모든 값이 True일 때만 True를 반환합니다.

# 54. 파이썬에서 zip() 함수는 어떻게 사용하나요?

  • zip() 함수는 여러 개의 반복 가능한 객체를 묶어 튜플로 반환합니다. 예를 들어, zip([1, 2], ['a', 'b'])[(1, 'a'), (2, 'b')]를 반환합니다.

# 55. 파이썬에서 del 키워드는 어떻게 사용되나요?

  • del 키워드는 변수나 객체를 삭제하는 데 사용됩니다. 예를 들어, del my_list[0]은 리스트의 첫 번째 항목을 삭제합니다.

# 56. 파이썬에서 exec() 함수는 무엇을 하나요?

  • exec() 함수는 문자열로 된 파이썬 코드를 실행합니다. 보안상 위험할 수 있으므로 신뢰할 수 있는 코드만 실행하는 것이 중요합니다.

# 57. 파이썬에서 __init__()__new__() 메소드의 차이점은 무엇인가요?

  • __new__()는 객체를 생성하는 메소드로, 객체가 생성될 때 호출됩니다. __init__()는 객체가 생성된 후 초기화 작업을 수행하는 메소드입니다.

# 58. 파이썬에서 hash() 함수는 무엇을 하나요?

  • hash() 함수는 객체의 해시 값을 반환합니다. 이 값은 객체를 해시 테이블에서 고유하게 식별할 수 있게 해줍니다.

# 59. 파이썬에서 frozenset의 특성은 무엇인가요?

  • frozenset은 불변(immutable) 집합입니다. set과 유사하지만 한 번 생성된 후 항목을 변경할 수 없습니다.

# 60. 파이썬에서 enumerate() 함수는 어떻게 사용하나요?

  • enumerate() 함수는 반복 가능한 객체에서 인덱스와 항목을 함께 반환하는 이터레이터를 반환합니다. 예를 들어, enumerate(['a', 'b', 'c'])[(0, 'a'), (1, 'b'), (2, 'c')]를 반환합니다.

# 61. 파이썬에서 클래스란 무엇인가요?

  • 클래스는 객체를 만들기 위한 설계도 또는 청사진입니다. 클래스는 속성(변수)과 메소드(함수)를 포함하여, 객체가 가져야 할 특성 및 동작을 정의합니다.

# 62. 객체란 무엇인가요?

  • 객체는 클래스에서 정의한 속성과 메소드를 가진 실체입니다. 클래스는 객체를 생성하는 틀이고, 객체는 그 틀을 바탕으로 메모리에 생성된 실제 인스턴스입니다.

# 63. 파이썬에서 클래스 변수와 인스턴스 변수의 차이점은 무엇인가요?

  • 클래스 변수는 클래스에서 정의되며, 클래스의 모든 인스턴스가 공유합니다. 인스턴스 변수는 각 객체(인스턴스)에서 개별적으로 정의되며, 객체마다 고유한 값을 가질 수 있습니다.

# 64. 클래스에서 메소드란 무엇인가요?

  • 메소드는 클래스 내에서 정의된 함수로, 클래스의 객체가 호출할 수 있는 동작을 정의합니다. 메소드는 첫 번째 인자로 self를 받으며, 이를 통해 객체의 속성에 접근하거나 수정할 수 있습니다.

# 65. 파이썬에서 self란 무엇인가요?

  • self는 클래스의 인스턴스를 참조하는 변수로, 인스턴스 메소드 내에서 객체의 속성에 접근하거나 변경할 때 사용됩니다. self는 파이썬에서 암묵적으로 전달되지만, 메소드 정의 시 명시적으로 작성해야 합니다.

# 66. 파이썬에서 클래스 상속이란 무엇인가요?

  • 클래스 상속은 하나의 클래스가 다른 클래스의 속성과 메소드를 상속받아 사용하는 방식입니다. 이를 통해 코드의 재사용성을 높일 수 있습니다.

# 67. 상속을 사용할 때 super()의 역할은 무엇인가요?

  • super()는 부모 클래스의 메소드를 호출할 때 사용됩니다. 상속 관계에서 부모 클래스의 메소드를 명시적으로 호출하여, 부모 클래스의 동작을 확장하거나 변경할 수 있습니다.

# 68. 파이썬에서 다형성이란 무엇인가요?

  • 다형성은 동일한 이름의 메소드가 서로 다른 클래스에서 다르게 동작하는 특성입니다. 예를 들어, 부모 클래스와 자식 클래스에서 동일한 메소드 이름을 사용하되, 자식 클래스에서 기능을 변경하는 방식입니다.

# 69. 추상 클래스(Abstract Class)란 무엇인가요?

  • 추상 클래스는 직접 인스턴스를 생성할 수 없으며, 다른 클래스에서 상속받아 구현해야 하는 클래스입니다. 추상 메소드를 포함하고 있어, 해당 메소드는 자식 클래스에서 반드시 구현해야 합니다.

# 70. 파이썬에서 @staticmethod@classmethod의 차이점은 무엇인가요?

  • @staticmethod는 클래스나 인스턴스를 참조하지 않는 메소드로, 클래스 내에서 독립적으로 동작하는 함수입니다. @classmethod는 첫 번째 인자로 클래스를 받으며, 클래스와 관련된 동작을 수행합니다.

# 71. __init__() 메소드의 역할은 무엇인가요?

  • __init__() 메소드는 클래스의 인스턴스가 생성될 때 자동으로 호출되는 생성자 메소드입니다. 객체의 초기 상태를 설정하는 데 사용됩니다.

# 72. 파이썬에서 __del__() 메소드의 역할은 무엇인가요?

  • __del__() 메소드는 객체가 삭제될 때 호출되는 소멸자 메소드입니다. 주로 객체가 사용하는 리소스를 해제하는 데 사용됩니다.

# 73. 클래스 속성에 접근하는 방법은 무엇인가요?

  • 클래스 속성에 접근하려면 ClassName.attribute 형식으로 접근할 수 있습니다. 인스턴스를 통해서도 접근할 수 있지만, 클래스 이름을 통해서도 접근이 가능합니다.

# 74. 파이썬에서 @property 데코레이터의 역할은 무엇인가요?

  • @property는 메소드를 속성처럼 사용할 수 있게 하는 데코레이터입니다. 이를 통해 메소드 호출을 속성 접근처럼 보이게 할 수 있습니다.

# 75. 파이썬에서 __str__()__repr__() 메소드의 차이점은 무엇인가요?

  • __str__()은 사용자가 보기 좋은 객체의 문자열 표현을 반환하는 메소드이며, __repr__()은 개발자가 객체를 디버깅할 때 사용하는, 더 공식적인 문자열 표현을 반환합니다.

# 76. @classmethod를 사용한 클래스 메소드의 예를 들어주세요.

  • 클래스 메소드는 첫 번째 인자로 클래스를 받으며, 클래스 자체와 관련된 동작을 할 때 사용됩니다. 예를 들어, @classmethod def from_string(cls, str_value)와 같은 방식으로 클래스 메소드를 정의할 수 있습니다.

# 77. __call__() 메소드의 역할은 무엇인가요?

  • __call__() 메소드는 객체가 함수처럼 호출될 수 있도록 하는 메소드입니다. 객체 인스턴스를 함수처럼 호출하려면 이 메소드를 구현해야 합니다.

# 78. 클래스에서 __getitem__() 메소드의 역할은 무엇인가요?

  • __getitem__() 메소드는 객체가 인덱싱을 사용할 수 있도록 정의되는 메소드입니다. 예를 들어, obj[index] 형태로 객체에 접근할 때 호출됩니다.

# 79. 클래스에서 __setitem__() 메소드의 역할은 무엇인가요?

  • __setitem__() 메소드는 객체에 인덱싱을 통해 값을 할당할 수 있도록 하는 메소드입니다. 예를 들어, obj[index] = value 형태로 값을 설정할 수 있게 합니다.

# 80. 파이썬에서 다중 상속을 사용할 때의 주의사항은 무엇인가요?

  • 다중 상속을 사용할 때는 메소드 이름 충돌, 메소드 해석 순서(MRO, Method Resolution Order) 문제에 주의해야 합니다. super()를 사용하여 메소드 호출 순서를 명확하게 관리하는 것이 좋습니다.

# 81. 파이썬에서 is 연산자와 == 연산자의 차이점은 무엇인가요?

  • is 연산자는 객체의 아이디(즉, 메모리 주소)를 비교하며, == 연산자는 객체의 값을 비교합니다. 두 객체가 동일한 값을 가질지라도 서로 다른 메모리 위치에 있으면 isFalse를 반환할 수 있습니다.

# 82. __init__() 메소드가 호출되는 시점은 언제인가요?

  • __init__() 메소드는 클래스의 인스턴스가 생성될 때 자동으로 호출됩니다. 객체가 생성된 후 초기화 작업을 수행하는 데 사용됩니다.

# 83. 파이썬에서 객체 지향 프로그래밍의 장점은 무엇인가요?

  • 객체 지향 프로그래밍은 코드 재사용, 유지보수 용이성, 코드의 모듈화, 다형성 등의 장점을 제공합니다. 각 객체는 독립적으로 관리되므로 코드가 잘 구조화되고 유지보수가 용이합니다.

# 84. 파이썬에서 mro() 메소드의 역할은 무엇인가요?

  • mro() 메소드는 메소드 해석 순서(Method Resolution Order)를 반환하며, 다중 상속에서 부모 클래스 메소드를 호출하는 순서를 확인할 수 있습니다.

# 85. 파이썬에서 @staticmethod의 사용 예시를 보여주세요.

  • @staticmethod는 클래스나 인스턴스를 참조하지 않는 메소드입니다. 예를 들어, @staticmethod def add_numbers(a, b) return a + b와 같이 사용할 수 있습니다.

# 86. 파이썬에서 __del__() 메소드가 호출되는 시점은 언제인가요?

  • __del__() 메소드는 객체가 가비지 컬렉터에 의해 삭제될 때 호출됩니다. 객체가 더 이상 참조되지 않으면 파이썬은 해당 객체의 __del__() 메소드를 호출하여 리소스를 정리합니다.

# 87. 파이썬에서 클래스 메소드와 인스턴스 메소드의 차이점은 무엇인가요?

  • 클래스 메소드는 첫 번째 인자로 클래스를 받으며, 클래스 수준에서 작업을 수행합니다. 인스턴스 메소드는 첫 번째 인자로 인스턴스를 받으며, 객체의 상태를 변경하거나 조회하는 데 사용됩니다.

# 88. 파이썬에서 상속 시 부모 클래스의 메소드를 호출하는 방법은 무엇인가요?

  • 부모 클래스의 메소드를 호출하려면 super()를 사용하거나 ParentClass.method() 형식으로 호출할 수 있습니다.

# 89. __new__() 메소드의 역할은 무엇인가요?

  • __new__() 메소드는 객체가 생성되는 시점에 호출되는 메소드입니다. 객체를 생성하는 역할을 하며, __init__() 전에 호출됩니다.

# 90. 파이썬에서 클래스의 인스턴스와 클래스 메소드에서의 selfcls의 차이점은 무엇인가요?

  • self는 인스턴스 메소드에서 인스턴스 자신을 참조하며, cls는 클래스 메소드에서 클래스를 참조합니다.

# 91. 파이썬에서 __slots__의 역할은 무엇인가요?

  • __slots__는 클래스에서 인스턴스 변수의 이름을 제한하여 메모리 사용을 최적화하는 데 사용됩니다. 이를 사용하면 동적 속성을 추가할 수 없고, 미리 정의된 속성만 사용할 수 있습니다.

# 92. 파이썬에서 @property@setter의 차이점은 무엇인가요?

  • @property는 객체의 속성을 읽기 전용으로 만드는 데 사용되며, @setter는 속성의 값을 설정하는 메소드를 정의하는 데 사용됩니다.

# 93. 파이썬에서 __contains__() 메소드의 역할은 무엇인가요?

  • __contains__() 메소드는 객체가 특정 항목을 포함하는지 여부를 확인하는 데 사용됩니다. 예를 들어, in 연산자를 사용할 때 호출됩니다.

# 94. 파이썬에서 객체의 비교를 위한 메소드들을 설명해주세요.

  • 객체 비교를 위한 메소드로는 __eq__()(동등 비교), __ne__()(비동등 비교), __lt__()(작다), __le__()(작거나 같다), __gt__()(크다), __ge__()(크거나 같다) 등이 있습니다.

# 95. 파이썬에서 @classmethod를 사용할 때의 주의사항은 무엇인가요?

  • @classmethod를 사용할 때 첫 번째 인자로 클래스 자신을 전달해야 하며, 클래스 수준에서만 동작하므로 인스턴스 속성에는 접근할 수 없습니다.

# 96. 파이썬에서 다중 상속을 사용할 때 super()가 중요한 이유는 무엇인가요?

  • 다중 상속에서 super()를 사용하면 부모 클래스의 메소드를 올바르게 호출할 수 있으며, 메소드 해석 순서(MRO)에 따라 실행되는 순서를 관리할 수 있습니다.

# 97. __iter__()__next__() 메소드의 역할은 무엇인가요?

  • __iter__()는 이터레이터 객체를 반환하는 메소드이고, __next__()는 이터레이터에서 다음 값을 반환하는 메소드입니다. 이 두 메소드를 구현하면 객체는 이터레이터로 사용할 수 있습니다.

# 98. 파이썬에서 isinstance()issubclass()의 차이점은 무엇인가요?

  • isinstance()는 객체가 특정 클래스의 인스턴스인지 확인하는 함수이고, issubclass()는 클래스가 다른 클래스의 서브클래스인지 확인하는 함수입니다.

# 99. 파이썬에서 __call__() 메소드를 어떻게 사용할 수 있나요?

  • __call__() 메소드를 구현하면 객체를 함수처럼 호출할 수 있습니다. 이 메소드는 obj()와 같은 형태로 객체를 호출할 때 실행됩니다.

# 100. 파이썬에서 객체 지향 프로그래밍을 사용하여 코드의 재사용성을 높이는 방법은 무엇인가요?

  • 상속, 다형성, 캡슐화 등을 활용하여 코드의 재사용성을 높일 수 있습니다. 상속을 통해 부모 클래스의 기능을 재사용하고, 다형성을 통해 다양한 방식으로 메소드를 확장하며, 캡슐화를 통해 객체의 상태를 안전하게 관리할 수 있습니다.