📌

클래스 개념 정리하기

1. 클래스와 객체를 쓰는 이유(필요성)

클래스와 객체의 필요성
코드의 재사용성: 클래스를 사용하면 동일한 구조를 가진 여러 객체를 생성할 수 있어 코드의 중복을 줄이고 재사용성을 높일 수 있습니다.
구조화된 데이터 관리: 클래스를 사용하면 관련 있는 데이터와 메소드를 하나의 논리적 단위로 묶어 관리할 수 있습니다.
유지보수 용이성: 클래스를 사용하면 코드를 모듈화하여 유지보수와 확장을 용이하게 합니다.
추상화: 클래스는 객체의 복잡한 내부 구현을 숨기고 단순한 인터페이스만을 제공하여 사용자에게 불필요한 정보를 숨길 수 있습니다.
class DGSW: def __init__(self, name, age): self.name = name self.age = age def userInfo(self): print(f"{self.name}{self.age} 살 입니다.") student1 = DGSW("신지윤", 18) student2 = DGSW("이상은", 17) student1.userInfo() student2.userInfo()
Python
복사

2. 클래스의 구성요소

클래스의 주요 구성요소
클래스명: 클래스의 이름으로, 클래스의 고유 식별자입니다.
생성자 메소드: 객체가 생성될 때 호출되는 메소드로, 주로 __init__ 메소드를 사용합니다.
인스턴스 변수: 각 객체가 독립적으로 가지는 변수입니다.
메소드: 클래스 내에 정의된 함수로, 객체의 동작을 정의합니다.
클래스 변수: 클래스에 속한 변수로, 모든 객체가 공유합니다.
예제 코드:
class Car: # 클래스 변수 wheels = 4 def __init__(self, brand, model): # 인스턴스 변수 self.brand = brand self.model = model # 메소드 def drive(self): print(f"{self.brand} {self.model} 가 달리고 있습니다!") # 객체 생성 car1 = Car("현대", "소나타") car2 = Car("기아", "카니발") car1.drive() car2.drive() # 클래스 변수 접근 print(f"{Car.wheels}개의 타이어가 있습니다!")
Python
복사

3. 인스턴스 변수란?

인스턴스 변수
각 객체가 독립적으로 가지는 변수로, 객체마다 다른 값을 가질 수 있습니다.
생성자 메소드 내에서 self 키워드를 사용하여 정의합니다.
예제 코드:
class DGSW: def __init__(self, name, age): self.name = name # 인스턴스 변수 self.age = age # 인스턴스 변수 # 객체 생성 student1 = DGSW("신지윤", 18) student2 = DGSW("이상은", 17) # 인스턴스 변수 접근 print(student1.name, student1.age) print(student2.name, student2.age)
Python
복사

4. 메소드란?

메소드
클래스 내에 정의된 함수로, 객체의 동작을 정의합니다.
메소드는 첫 번째 매개변수로 항상 self를 받으며, 이를 통해 인스턴스 변수를 접근하거나 수정할 수 있습니다.
예제 코드:
class Circle: def __init__(self, radius): self.radius = radius def area(self): return 3.14 * (self.radius ** 2) # 객체 생성 circle = Circle(5) # 메소드 호출 print(f"{circle.area()} ")
Python
복사

5. 클래스 변수란?

클래스 변수
클래스에 속한 변수로, 모든 객체가 공유합니다.
클래스 선언 내에서 직접 정의됩니다.
예제 코드:
class School: # 클래스 변수 school_name = "ABC High School" def __init__(self, student_name): self.student_name = student_name # 객체 생성 student1 = School("Alice") student2 = School("Bob") # 클래스 변수 접근 print(student1.school_name) print(student2.school_name) # 클래스 변수 수정 School.school_name = "XYZ High School" # 클래스 변수 접근 print(student1.school_name) print(student2.school_name)
Python
복사

6. 정적 메소드란?

정적 메소드
클래스와 관련 있지만 클래스나 인스턴스 변수에 접근하지 않는 메소드입니다.
@staticmethod 데코레이터를 사용하여 정의합니다.
예제 코드:
class Math: @staticmethod def add(x, y): return x + y # 정적 메소드 호출 result = Math.add(5, 3) print(f"The sum is: {result}")
Python
복사

7. 클래스 메소드란?

클래스 메소드
클래스 변수를 조작하거나 클래스 레벨에서 동작하는 메소드입니다.
첫 번째 매개변수로 클래스를 받으며, cls를 사용하는 것이 관례입니다.
@classmethod 데코레이터를 사용하여 정의합니다.
예제 코드:
python코드 복사 class Employee: raise_amount = 1.05 def __init__(self, name, salary): self.name = name self.salary = salary def apply_raise(self): self.salary *= self.raise_amount @classmethod def set_raise_amount(cls, amount): cls.raise_amount = amount # 클래스 메소드 호출 Employee.set_raise_amount(1.10) # 객체 생성 emp1 = Employee("Alice", 50000) emp2 = Employee("Bob", 60000) # 인스턴스 메소드 호출 emp1.apply_raise() emp2.apply_raise() # 결과 출력 print(emp1.salary) print(emp2.salary)
Python
복사

8. 상속이란?

상속
상속은 기존 클래스를 재사용하여 새로운 클래스를 만드는 방법입니다.
상속을 통해 코드의 재사용성을 높이고, 기능을 확장하거나 수정할 수 있습니다.
예제 코드:
class Animal: def __init__(self, name): self.name = name def speak(self): raise NotImplementedError("Subclass must implement abstract method") class Dog(Animal): def speak(self): return f"{self.name} says Woof!" class Cat(Animal): def speak(self): return f"{self.name} says Meow!" # 객체 생성 dog = Dog("Buddy") cat = Cat("Misty") # 메소드 호출 print(dog.speak()) print(cat.speak())
Python
복사

9. 오버라이딩이란?

오버라이딩
오버라이딩은 부모 클래스에서 정의된 메소드를 자식 클래스에서 재정의하는 것을 말합니다.
이를 통해 자식 클래스에서 부모 클래스의 메소드를 덮어쓸 수 있습니다.
예제 코드:
python코드 복사 class Bird: def __init__(self, name): self.name = name def fly(self): return f"{self.name} is flying!" class Penguin(Bird): def fly(self): return f"{self.name} can't fly but can swim!" # 객체 생성 bird = Bird("Sparrow") penguin = Penguin("Pingu") # 메소드 호출 print(bird.fly()) print(penguin.fly())
Python
복사
위의 내용을 노션에 정리한 후, 노션의 내보내기 기능을 사용하여 PDF 파일로 저장하면 됩니다.