Programming Languages(81)
-
클래스 메서드와 정적 메서드
클래스 메서드와 정적 메서드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 -
상속(Inheritance)
상속(Inheritance)1. 상속이란?상속은 한 클래스가 다른 클래스의 속성과 메서드를 물려받는 것을 말합니다. 이를 통해 코드 재사용성을 높이고 계층적인 관계를 구현할 수 있습니다.2. 상속의 이론적 개념2.1 상속의 핵심 개념IS-A 관계: 상속은 "IS-A" 관계를 표현합니다. 예를 들어 "고양이는 동물이다(Cat IS-A Animal)". 이 관계는 자식 클래스가 부모 클래스의 특수한 형태임을 의미합니다.코드 재사용성: 상속의 주요 이점 중 하나는 기존 코드를 재사용하여 개발 시간을 단축하고 코드 중복을 줄이는 것입니다.확장성: 기존 클래스의 기능을 변경하지 않고 새로운 기능을 추가할 수 있습니다.2.2 상속의 종류단일 상속(Single Inheritance): 한 클래스가 하나의 부모 클래스..
2025.03.26