네, 파이썬(Python)은 객체 지향 프로그래밍(Object-Oriented Programming)과 절차 지향 프로그래밍(Procedural Programming)을 모두 지원합니다. 파이썬은 범용 프로그래밍을 위해 설계된 고급 프로그래밍 언어이기 때문입니다.
파이썬은 멀티 패러다임(multi-paradigm) 언어로, 절차 지향, 객체 지향, 함수형 스타일의 프로그램이나 라이브러리를 모두 작성할 수 있습니다. 물론 '함수형'이라는 단어가 무엇을 의미하느냐에 따라 해석이 달라질 수 있지만, 파이썬 역시 함수형 언어의 일부 특징을 갖추고 있습니다.
객체 지향 프로그래밍(OOP)
클래스(Class), 캡슐화(Encapsulation), 다형성(Polymorphism), 상속(Inheritance) 등 객체 지향의 핵심 개념을 모두 활용할 수 있기 때문에, 파이썬은 대표적인 객체 지향 프로그래밍 언어로 분류됩니다.
절차 지향 프로그래밍
반대로 for, while 같은 반복문과 조건문 등 제어 구조를 중심으로 코드를 작성하면, 파이썬으로도 충분히 절차 지향 방식의 프로그램을 만들 수 있습니다. 즉, 어떤 패러다임으로 코딩할지는 개발자의 선택에 달려 있습니다.
예제 코드
class Rectangle:
def __init__(self, length, breadth, unit_cost=0):
self.length = length
self.breadth = breadth
self.unit_cost = unit_cost
def get_perimeter(self):
return 2 * (self.length + self.breadth)
def get_area(self):
return self.length * self.breadth
def calculate_cost(self):
area = self.get_area()
return area * self.unit_cost
# 가로 = 120cm, 세로 = 160cm, 1cm²당 2000루피
r = Rectangle(160, 120, 2000)
print("Area of Rectangle: %s cm^2" % (r.get_area()))
print("Cost of rectangular field: Rs. %s " %(r.calculate_cost()))
위 예제는 사각형(Rectangle) 클래스를 정의한 것으로, 가로·세로 길이와 제곱센티미터당 단가를 속성으로 저장하고, 둘레와 넓이를 계산하는 메서드, 그리고 총 비용을 계산하는 메서드를 함께 포함하고 있습니다. 이처럼 데이터(속성)와 동작(메서드)을 하나의 객체로 묶어 관리하는 것이 바로 객체 지향 프로그래밍의 전형적인 모습입니다.
실행 결과
Area of Rectangle: 19200 cm^2
Cost of rectangular field: Rs. 38400000