본문 바로가기
문법관련/python

파이썬 고급 문법(class~모듈과 패키지)

by print_soo 2024. 9. 13.

클래스 (class)

클래스는 객체 지향 프로그래밍에서 객체를 정의하는 틀이다. 클래스는 데이터(멤버변수)와 함수(메소드)를 포함할 수 있다. 클래스는 여러 객체를 생성할 수 있는 청사진 역할을 한다.

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

    def greet(self):
        print(f"Hello, my name is {self.name}")

 

생성자

생성자는 클래스의 인스턴스가 생성될 때 호출되는 함수이다. 객체의 초기 상태를 정의하는 데 사용된다.

class Person:
    def __init__(self, name):
        self.name = name  # 초기화할 때 전달받은 값을 멤버 변수에 저장

 

멤버변수

멤버변수는 클래스 내부에서 선언된 변수로, 각 객체마다 고유한 값을 가질 수 있다. self 키워드를 통해 참조된다.

class Person:
    def __init__(self, name, age):
        self.name = name  # 멤버변수
        self.age = age    # 멤버변수

 

메소드

메소드는 클래스 내부에 정의된 함수로, 객체의 동작을 정의한다. 메소드는 첫 번째 인수로 항상 self를 받는다.

class Person:
    def greet(self):
        print(f"Hello, my name is {self.name}")

 

self

self는 메소드 내에서 인스턴스 자신을 참조하는 변수이다. 이를 통해 인스턴스의 멤버변수와 메소드에 접근할 수 있다.

class Person:
    def greet(self):
        print(f"Hello, my name is {self.name}")  # self로 객체 자신의 변수에 접근

 

상속

상속은 기존 클래스를 확장하여 새로운 클래스를 만드는 것이다. 자식 클래스는 부모 클래스의 속성과 메소드를 물려받는다.

class Animal:
    def sound(self):
        print("Some sound")

class Dog(Animal):
    def bark(self):
        print("Woof!")

 

super

super는 부모 클래스의 메소드를 자식 클래스에서 호출할 때 사용된다.

class Animal:
    def __init__(self, name):
        self.name = name

class Dog(Animal):
    def __init__(self, name, breed):
        super().__init__(name)  # 부모 클래스의 생성자 호출
        self.breed = breed

 

다중상속

파이썬에서는 한 클래스가 여러 부모 클래스로부터 상속을 받을 수 있다.

class A:
    def method_a(self):
        print("A")

class B:
    def method_b(self):
        print("B")

class C(A, B):  # 다중상속
    pass

 

메소드 오버라이딩

메소드 오버라이딩은 자식 클래스에서 부모 클래스의 메소드를 재정의하는 것이다.

class Animal:
    def sound(self):
        print("Some sound")

class Dog(Animal):
    def sound(self):  # 부모 클래스의 sound 메소드를 오버라이딩
        print("Woof!")

 

pass

pass는 아무 동작도 하지 않는 코드 블록을 정의할 때 사용된다. 주로 빈 클래스를 정의할 때 쓰인다. 

즉, 나중에 할테니깐 내버려 둬. 라는 의미이다

class EmptyClass:
    pass

예외처리

파이썬에서 예외가 발생했을 때 프로그램이 중단되지 않고 적절하게 처리되도록 try-except 문을 사용한다.

try:
    x = int(input("숫자를 입력하세요: "))
    print(10 / x)
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.")
except ValueError:
    print("유효한 숫자를 입력하세요.")

에러

에러는 프로그램 실행 중 발생할 수 있는 문제 상황이다. 파이썬에는 ValueError, TypeError, ZeroDivisionError 등의 다양한 에러가 있다. 이러한 에러를 적절히 처리해야 한다.

 

 

모듈

모듈은 파이썬 파일 하나로, 변수, 함수, 클래스를 포함할 수 있다. 다른 파일에서 모듈을 import하여 사용할 수 있다.

# my_module.py
def greet():
    print("Hello")

# main.py
import my_module
my_module.greet()

패키지

패키지는 모듈들을 디렉터리 형태로 묶은 것이다. 여러 모듈을 구조적으로 관리할 수 있게 해준다. 패키지 내에는 __init__.py 파일이 있어야 한다.

# my_package/__init__.py
# my_package/module.py

# main.py
from my_package import module
module.some_function()