Python: 상속, 파일 시스템, 오류 처리 🎯

Python의 또 한 주가 지났고 다시 한 번 작성해야 할 새로운 주제가 많이 있습니다!

배우는 시간마다 이 언어가 얼마나 강력하고 복잡한지 깨닫게 됩니다.

🏊‍♂️에 뛰어들자

목차


  • Inheritance
  • Error Handling
  • File System

  • 계승



    상속은 객체 지향 프로그래밍 패러다임의 핵심 측면입니다.

    지난 포스팅에서는 간단한 예제로 클래스를 소개했습니다. 여기서 아이디어는 "부모"클래스에서 상속하는 "자식"클래스를 만드는 것입니다.

    자식 클래스는 부모의 공개 속성 및 메서드에 액세스할 수 있습니다.

    # Parent Class
    class Vehicle:
        def __init__(self, color):
            self.color = color
    
        def info(self):
            print(f"Vehicle => color: {self.color}")
    
    
    vehicle = Vehicle("red")
    vehicle.info()  # Vehicle => color: red
    
    # Child Classes
    class Car(Vehicle):
        def __init__(self, color, brand):
            super().__init__(color)
            self.brand = brand
            self.wheels_count = 4
    
        def info(self):
            print(f"Car => color: {self.color} - brand: {self.brand} - wheels count: {self.wheels_count}")
    
    
    class Bike(Vehicle):
        def __init__(self, color, brand):
            super().__init__(color)
            self.brand = brand
            self.wheels_count = 2
    
        def info(self):
            print(f"Bike => color: {self.color} - brand: {self.brand} - wheels count: {self.wheels_count}")
    
    
    car = Car("blue", "Ferrari")
    car.info()  # Car => color: blue - brand: Ferrari - wheels count: 4
    
    bike = Bike("Yellow", "Yamaha")
    bike.info()  # Bike => color: Yellow - brand: Yamaha - wheels count: 2
    


    위의 예에서는 "Vehicle"클래스에서 파생되는 "Car"및 "Bike"클래스를 선언합니다. 둘 다 "Vehicle"의 생성자(init)와 info() 메서드에 액세스할 수 있습니다.

    여기에서 필드를 하나 더 추가하고 info 메서드의 동작을 조정하기 위해 생성자를 재정의하기로 결정했습니다.

    참고: "super"키워드는 단순히 상위 클래스를 나타냅니다.

    오류 처리



    우리는 개발자로서 오류와 프로그램이 소멸되는 데 익숙하지만 가능하다면 견고하고 오류가 없으며 버그가 없는 프로그램을 프로덕션에 제공해야 합니다.

    지금부터 Python 코드가 정확하고 구문 오류가 발생하지 않는다고 가정합니다.

    처리되지 않은 예외를 실행하면 프로그램이 중단되고 바로 실행이 중지됩니다.

    충돌 가능성을 방지하려면 오류가 발생하기 쉬운 코드를 "try-except-else"블록으로 래핑하는 것이 좋습니다.



    try:
        # Code to execute
        raise Exception("An error occured.")  # Some code raise an exception.
    except:
        # If there is an exception
        print("Something failed ❌")
    else:
        # If no exception was raised
        print("Everything is Ok ✅")
    finally:
        # Code to execute
        print("We made it 👍")
    


    많지는 않지만 코드 품질 작업을 시작하기에 충분합니다. 물론 전체 코드베이스를 거대한 try 블록으로 감싸는 것은 좋은 습관이 아닙니다...

    파일 시스템



    Python은 로컬 파일 및 디렉터리와 상호 작용하는 간단한 방법을 제공합니다.

    파일을 열고 닫는 모범 사례는 with 키워드를 사용하는 것입니다. 이 키워드는 중첩된 코드 블록이 완료된 후 자동으로 파일을 닫습니다.

    # text.txt
    Hello
    
    # main.py
    with open("text.txt", "r") as file:
        print(file.read()) # Display "Hello" in the console.
    
    with open("text.txt", "a") as file:
        file.write(" World!") # file.txt's content is "Hello World!" now.
    
    with open("text.txt", "w") as file:
        file.write("Cool!") # file.txt's content is "Cool!" now.
    


    첫 번째 인수는 대상 파일이고 두 번째 인수는 열기 모드입니다.



    "os"메소드를 사용하여 디렉토리와 상호 작용하는 것도 가능합니다. 아래 예제는 현재 디렉토리에 있는 모든 파일을 나열하는 방법을 보여줍니다.

    # main.py
    import os
    
    with os.scandir("./") as entries:
        for entry in entries:
            print(entry.name)
    
    # Displays in the console: 
    # file.txt
    # main.py
    # .vscode
    


    또 다른 흥미로운 방법은 새 디렉토리를 생성하는 "mkdir"입니다.

    # main.py
    import os
    
    try:
        os.mkdir("Test")
    except:
        print("Directory already exists.")
    else:
        print("Directory created ✅")
    


    여기에서 동일한 이름의 디렉토리가 이미 존재하는 경우 프로그램이 충돌하기 때문에 코드를 "try-except"블록으로 래핑하는 것이 현명할 수 있습니다.

    읽어주셔서 감사합니다 😇

    좋은 웹페이지 즐겨찾기