Python/포스팅

파이썬 클래스

짜집퍼박사(짜박) 2023. 12. 3. 02:08

파이썬 클래스는 객체 지향 프로그래밍 (Object-Oriented Programming, OOP)의 핵심 개념 중 하나입니다. 클래스는 데이터와 해당 데이터를 조작하는 메서드(함수)를 하나로 묶은 사용자 정의 데이터 형식을 정의합니다. 여기서는 파이썬 클래스의 기본적인 사용법과 개념을 살펴보겠습니다.

 

1. 클래스 정의

클래스를 정의할 때는 class 키워드를 사용합니다.

class MyClass:
    # 클래스의 속성(멤버 변수)
    attribute = "Hello, World!"

    # 클래스의 메서드(멤버 함수)
    def method(self):
        print("This is a method.")

 

2. 객체 생성

클래스를 기반으로 실제 데이터를 담은 객체를 생성할 수 있습니다.

# MyClass 클래스의 객체 생성
my_object = MyClass()

# 객체의 속성에 접근
print(my_object.attribute)  # 출력: Hello, World!

# 객체의 메서드 호출
my_object.method()  # 출력: This is a method.

 

3. 초기화 메서드 (__init__)

클래스의 인스턴스가 생성될 때 호출되는 특별한 메서드로, 초기화 작업을 수행합니다.

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

# Person 클래스의 객체 생성 및 초기화
person1 = Person("Alice", 30)
person2 = Person("Bob", 25)

# 객체의 속성에 접근
print(person1.name, person1.age)  # 출력: Alice 30
print(person2.name, person2.age)  # 출력: Bob 25

 

4. 상속

기존 클래스를 기반으로 새로운 클래스를 정의하는 상속을 지원합니다.

class Animal:
    def speak(self):
        print("Animal speaks.")

class Dog(Animal):
    def bark(self):
        print("Dog barks.")

# Animal 클래스의 객체 생성
animal = Animal()
animal.speak()  # 출력: Animal speaks.

# Dog 클래스의 객체 생성
dog = Dog()
dog.speak()  # 출력: Animal speaks. (상속된 메서드 호출)
dog.bark()   # 출력: Dog barks.

 

5. 메서드 오버라이딩

상속된 메서드를 하위 클래스에서 재정의할 수 있습니다.

class Cat(Animal):
    def speak(self):
        print("Cat meows.")

# Cat 클래스의 객체 생성
cat = Cat()
cat.speak()  # 출력: Cat meows. (상속된 메서드 오버라이딩)

 

6. 클래스 변수와 인스턴스 변수

클래스 변수는 클래스에 속하고 모든 인스턴스가 공유하며, 인스턴스 변수는 각 인스턴스에 속합니다.

class Counter:
    count = 0  # 클래스 변수

    def __init__(self):
        Counter.count += 1  # 인스턴스가 생성될 때마다 클래스 변수 증가
        self.instance_count = Counter.count  # 인스턴스 변수

# Counter 클래스의 객체 생성
counter1 = Counter()
print(counter1.instance_count)  # 출력: 1

counter2 = Counter()
print(counter2.instance_count)  # 출력: 2

 

7. 클래스 메서드와 정적 메서드

클래스 메서드는 클래스에 속하며, 첫 번째 인자로 클래스를 받습니다. 정적 메서드는 클래스나 인스턴스와 무관하게 호출되며, 특별한 첫 번째 인자를 받지 않습니다.

class MathOperation:
    @classmethod
    def add(cls, x, y):
        print(f"Adding {x} and {y} gives {x + y}.")

    @staticmethod
    def multiply(x, y):
        print(f"Multiplying {x} and {y} gives {x * y}.")

# 클래스 메서드 호출
MathOperation.add(3, 5)  # 출력: Adding 3 and 5 gives 8.

# 정적 메서드 호출
MathOperation.multiply(3, 5)  # 출력: Multiplying 3 and 5 gives 15.

파이썬 클래스는 객체 지향 프로그래밍의 다양한 개념과 기능을 지원하여 모듈화와 재사용성을 높여줍니다. 클래스를 통해 데이터와 기능을 하나로 묶어 구조화된 프로그램을 작성할 수 있습니다.

 

With ChatGPT

'Python > 포스팅' 카테고리의 다른 글

파이썬 생성자  (0) 2023.12.03
파이썬 객체  (0) 2023.12.03
파이썬 sys 모듈  (0) 2023.12.03
파이썬 프로그램의 입출력  (0) 2023.12.03
파이썬 파일 with문  (0) 2023.12.03