[파이썬] 파이썬 2와 파이썬 3의 클래스 및 객체 지향 프로그래밍 차이

파이썬은 객체 지향 프로그래밍을 지원하는 매우 인기있는 프로그래밍 언어입니다. 하지만 파이썬 2와 파이썬 3는 객체 지향 프로그래밍 측면에서 몇 가지 중요한 차이점을 가지고 있습니다. 이번 글에서는 파이썬 2와 파이썬 3에서의 클래스 및 객체 지향 프로그래밍의 주요 차이점을 살펴보겠습니다.

1. 클래스 정의

파이썬 2

class MyClass:
    def __init__(self, name):
        self.name = name
    
    def get_name(self):
        return self.name

파이썬 3

class MyClass:
    def __init__(self, name):
        self.name = name
    
    def get_name(self):
        return self.name

파이썬 2와 파이썬 3에서 클래스를 정의하는 방법은 동일합니다. 클래스는 class 키워드를 사용하여 정의되며, __init__ 메서드를 통해 초기화됩니다. 메서드의 첫 번째 인수는 self로, 인스턴스를 참조하는 데 사용됩니다.

2. 상속

파이썬 2

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

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

파이썬 3

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

class Child(Parent):
    def __init__(self, name, age):
        super().__init__(name)
        self.age = age

파이썬 2에서는 부모 클래스의 생성자를 호출하기 위해 부모 클래스의 이름과 인스턴스를 전달하는 방식을 사용했습니다. 하지만 파이썬 3에서는 super() 함수를 사용하여 부모 클래스의 생성자를 호출할 수 있습니다.

3. 메서드 오버라이딩

파이썬 2

class Parent:
    def print_info(self):
        print("Parent Class")

class Child(Parent):
    def print_info(self):
        print("Child Class")

파이썬 3

class Parent:
    def print_info(self):
        print("Parent Class")

class Child(Parent):
    def print_info(self):
        print("Child Class")

파이썬 2와 파이썬 3에서 메서드 오버라이딩은 동일합니다. 자식 클래스에서 부모 클래스의 메서드를 동일한 이름으로 정의하여 오버라이딩할 수 있습니다.

4. 속성 접근

파이썬 2

class MyClass:
    def __init__(self, name):
        self.__name = name

my_obj = MyClass("John")
print(my_obj.__name) # AttributeError: 'MyClass' object has no attribute '__name'

파이썬 3

class MyClass:
    def __init__(self, name):
        self.__name = name

my_obj = MyClass("John")
print(my_obj.__name) # AttributeError: 'MyClass' object has no attribute '__name'

파이썬 2와 파이썬 3에서는 클래스 내부에 정의된 속성에 접근할 때 동일한 방식을 사용합니다. 하지만 클래스 내부 속성을 보호하기 위해 이름 앞에 언더스코어를 사용하는 것은 파이썬의 관례입니다.

결론

파이썬 2와 파이썬 3의 클래스 및 객체 지향 프로그래밍은 주요한 차이가 없습니다. 클래스 정의, 상속, 메서드 오버라이딩 및 속성 접근 등의 측면에서 동일한 방식으로 사용할 수 있습니다. 따라서, 기존에 파이썬 2를 사용하던 개발자들은 파이썬 3로의 전환 과정에서 큰 어려움 없이 객체 지향 프로그래밍을 계속 사용할 수 있을 것입니다.

중요 참고: 파이썬 2는 지원이 중단되었으므로, 새로운 프로젝트를 시작한다면 파이썬 3를 사용하는 것이 좋습니다.