Programming Languages/Python(34)
-
연결 리스트(Linked List)
연결 리스트(Linked List)1. 개념연결 리스트는 각 노드가 데이터와 다음 노드를 가리키는 포인터로 구성된 선형 자료구조입니다. 각 노드는 메모리 상에서 연속적으로 저장되지 않고, 포인터를 통해 다음 노드와 연결됩니다.2. 연결 리스트의 특징동적 크기: 실행 시간에 크기를 조절할 수 있습니다.삽입/삭제 효율성: 특정 위치에서의 삽입과 삭제가 O(1) 시간 복잡도로 수행됩니다.임의 접근 비효율성: 특정 위치의 요소에 접근하기 위해 O(n) 시간이 필요합니다.메모리 사용: 각 노드마다 데이터와 포인터를 저장하므로 배열보다 더 많은 메모리를 사용합니다.3. 연결 리스트의 종류3.1. 단일 연결 리스트(Singly Linked List)각 노드가 데이터와 다음 노드를 가리키는 포인터를 가집니다.class..
2025.03.27 -
클래스 메서드와 정적 메서드
클래스 메서드와 정적 메서드1. 클래스 메서드클래스 메서드는 클래스에 바인딩된 메서드로, @classmethod 데코레이터를 사용하여 정의합니다. 첫 번째 매개변수로 클래스 자체를 받습니다(보통 cls로 명명).class Person: count = 0 # 클래스 변수 def __init__(self, name, age): self.name = name self.age = age Person.count += 1 @classmethod def create_anonymous(cls, age): # 클래스 메서드는 클래스를 첫 번째 인자로 받음 return cls("Anonymous", age) @..
2025.03.26 -
특수 메서드 (매직 메서드)
특수 메서드 (매직 메서드)1. 특수 메서드란?파이썬의 특수 메서드(매직 메서드)는 이중 밑줄(__)로 시작하고 끝나는 메서드로, 특정 동작이나 연산자의 동작을 정의합니다. 이를 통해 객체의 행동을 사용자 정의할 수 있습니다.2. 주요 특수 메서드class Vector: def __init__(self, x, y): self.x = x self.y = y # 문자열 표현 def __repr__(self): return f"Vector({self.x}, {self.y})" def __str__(self): return f"({self.x}, {self.y})" # 벡터 덧셈 def __add__(self..
2025.03.26 -
추상 클래스와 인터페이스
추상 클래스와 인터페이스1. 추상 클래스(Abstract Class)추상 클래스는 직접 인스턴스화할 수 없고, 다른 클래스가 상속받아 구현해야 하는 메서드를 정의하는 클래스입니다. 파이썬에서는 abc 모듈을 사용하여 추상 클래스를 구현합니다.from abc import ABC, abstractmethodclass Animal(ABC): # ABC를 상속받아 추상 클래스 생성 @abstractmethod # 추상 메서드 정의 def make_sound(self): pass # 구현은 자식 클래스에서 @abstractmethod def move(self): pass def breathe(self): return "숨을..
2025.03.26 -
다형성 (Polymorphism)
다형성(Polymorphism)1. 다형성이란?다형성은 같은 이름의 메서드가 다른 클래스에서 다른 기능을 수행할 수 있게 하는 개념입니다. 이를 통해 여러 객체 타입에 대해 동일한 인터페이스를 사용할 수 있으며, 코드의 유연성과 확장성이 높아집니다.2. 메서드 오버라이딩을 통한 다형성앞서 상속에서 본 것처럼, 자식 클래스는 부모 클래스의 메서드를 오버라이딩(재정의)하여 자신만의 기능을 구현할 수 있습니다.class Shape: def area(self): pass # 추상적인 개념이므로 구현하지 않음 def describe(self): return f"이것은 도형입니다. 면적: {self.area()}"class Circle(Shape): def __in..
2025.03.26 -
캡슐화(Encapsulation)
캡슐화(Encapsulation)1. 캡슐화란?캡슐화는 객체의 속성과 메서드를 하나로 묶고, 실제 구현 내용의 일부를 외부에 감추는 것을 말합니다. 이를 통해 객체 내부 구현의 안정성을 높일 수 있습니다.2. 접근 제어자파이썬에서는 진정한 의미의 private 속성이나 메서드는 없지만, 네이밍 컨벤션을 통해 이를 표현합니다:_변수명: 관례적으로 protected 멤버 (클래스 내부와 자식 클래스에서만 접근)__변수명: 이름 맹글링(name mangling)을 통한 private 멤버 (클래스 내부에서만 접근)class BankAccount: def __init__(self, owner, balance=0): self.owner = owner # 공개 속성 sel..
2025.03.26