반응형

목차

  1. 객체 지향 프로그래밍(Object-Oriented Programming)
  2. 데이터 객체
  3. 정수와 실수 객체
  4. 사용자 정의 객체
  5. 클래스 정의와 사용 예시

객체 지향 프로그래밍(Object-Oriented Programming)

객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 함수와 프로시저 대신 '객체'라는 개념을 중심으로 코드를 구성하는 데 중점을 둔 프로그래밍 패러다임입니다. 객체는 클래스의 인스턴스이며, 클래스는 객체의 속성(속성)과 동작(메서드)을 정의하는 청사진입니다. Python은 여러 패러다임 중에서도 객체 지향 프로그래밍을 지원하는 다중 패러다임 언어입니다.

다음은 Python에서 OOP의 주요 개념입니다:

  1. 클래스와 객체
    클래스는 특정 속성과 메서드를 가진 객체를 생성하기 위한 청사진입니다. 객체는 클래스의 인스턴스이며, 각 객체는 고유한 상태(속성)와 동작(메서드)을 가질 수 있습니다. Python에서는 'class' 키워드를 사용하여 클래스를 정의합니다.

  2. 상속
    상속은 클래스가 부모 클래스로부터 속성 및 메서드를 상속하는 기능입니다. 이를 통해 부모 클래스의 일부 또는 모든 기능을 가진 새 클래스를 생성하여 코드의 재사용성과 모듈성을 높일 수 있습니다. Python에서는 클래스 이름 뒤에 괄호 안에 부모 클래스를 지정하여 클래스로부터 상속할 수 있습니다.

  3. 캡슐화
    캡슐화는 데이터(속성)와 데이터를 조작하는 연산(메서드)을 단일 단위인 클래스 안에 묶는 개념입니다. 이를 통해 객체의 내부 상태에 대한 액세스를 제한하여 외부 간섭으로부터 객체를 보호할 수 있습니다. 파이썬에서는 이중 밑줄 접두사(예: __private_attribute)로 표시되는 비공개 속성 및 메서드를 사용하여 캡슐화를 구현할 수 있습니다.

  4. 다형성
    다형성은 서로 다른 객체가 특정 유형에 적합한 방식으로 동일한 메서드 호출에 응답할 수 있는 기능을 말합니다. 이를 통해 단일 인터페이스를 사용하여 다양한 유형의 객체를 표현할 수 있으므로 코드의 유연성과 확장성이 향상됩니다. 파이썬에서 다형성은 종종 메서드 재정의(메서드 재정의는 하위 클래스가 부모 클래스에서 상속된 메서드에 대한 새로운 구현을 제공하는 것)를 통해 달성됩니다.

다음은 Python에서 간단한 클래스 정의의 예입니다:

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

    def bark(self):
        print(f"{self.name} 가 짖습니다!")

dog1 = Dog("Fido", 3)
dog2 = Dog("Buddy", 5)

dog1.bark() # 출력: Fido가 짖습니다!
dog2.bark() # 출력: Buddy가 짖습니다!


이 예제에서 Dog는 __init__ 메서드(생성자)와 bark 메서드가 있는 클래스입니다. dog1과 dog2는 각각 고유한 이름과 나이 속성을 가진 Dog 클래스의 인스턴스입니다.


데이터 객체

데이터 객체는 프로그래밍 환경 내에서 실제 엔티티, 개념 또는 구조의 표현입니다. 프로그램에서 데이터를 저장, 처리 또는 관리하는 모든 데이터 구조를 설명하는 데 사용할 수 있는 일반적인 용어입니다. 데이터 객체는 클래스 또는 기본 제공 데이터 유형에서 생성되며, 이와 관련된 속성(속성) 및 메서드(함수)가 있습니다.

프로그래밍 언어에서 데이터 개체는 기본 제공 데이터 유형, 사용자 지정 데이터 유형 또는 클래스의 인스턴스일 수 있습니다. Python에서 기본 제공 데이터 객체의 몇 가지 예로는 문자열, 목록, 사전, 튜플이 있습니다. 이러한 데이터 객체에는 프로그래머가 효과적으로 작업하는 데 도움이 되는 고유한 속성 및 메서드 세트가 있습니다.

다음은 Python의 몇 가지 일반적인 기본 제공 데이터 객체에 대한 간략한 설명입니다:

1. 문자열
문자열은 문자의 시퀀스입니다. 문자열은 불변 데이터 객체이므로 일단 생성되면 내용을 변경할 수 없습니다. 문자열에는 lower(), upper(), replace()와 같은 조작을 위한 몇 가지 기본 제공 메서드가 있습니다.

 

text = "안녕하세요, 세상!"
print(text.lower()) # 출력: 안녕하세요, 세상!


2. 리스트
리스트는 서로 다른 데이터 유형일 수 있는 항목의 정렬된 컬렉션입니다. 리스트는 변경 가능하므로 항목을 추가, 제거 또는 수정할 수 있습니다. 몇 가지 일반적인 목록 메서드에는 append(), remove(), pop()이 있습니다.

numbers = [1, 2, 3, 4, 5]
numbers.append(6)
print(numbers) # 출력: [1, 2, 3, 4, 5, 6]


3. 딕셔너리
딕셔너리는 키-값 쌍의 정렬되지 않은 컬렉션입니다. 키는 고유하며 각 키는 특정 값에 매핑됩니다. 딕셔너리는 가변적이며 keys(), values(), update() 등의 메서드가 있습니다.

student = {'name': 'John', 'age': 25, 'grade': 'A'}
print(student['name']) # 출력: John


4. 튜플
튜플은 정렬된 불변의 항목 컬렉션입니다. 목록과 비슷하지만 일단 튜플이 생성되면 요소를 추가, 제거 또는 수정할 수 없습니다. 튜플은 항목의 불변 순서가 필요할 때 유용합니다.

coordinates = (12.5, 45.6)
print(coordinates[0]) # 출력: 12.5


이러한 기본 제공 데이터 객체는 파이썬 프로그래밍의 기본이며, 이를 이해하면 프로그램에서 데이터를 효과적으로 작업하는 데 도움이 됩니다.


정수와 실수 객체

1. 정수 객체(Integer Objects)

  • 파이썬에서 정수는 양수, 음수 및 0 값(예: -3, 0, 25)을 포함한 정수를 표현하는 데 사용됩니다.
  • 파이썬에서 정수는 시스템 아키텍처에 의해 범위가 결정되는 다른 프로그래밍 언어와 달리 사용 가능한 메모리에 의해서만 제한되어 임의로 커질 수 있습니다.
a = 10
b = -5
c = 0
sum_ab = a + b # 덧셈을 실행하며 결과는 5입니다.
product_ab = a * b # 곱셈을 실행하며, 결과는 -50입니다.


2. 실수 객체(Float Objects)

  • 파이썬의 실수는 분수 성분이나 소수점(예: 2.5, -0.1, 3.0)이 포함된 실수를 표현하는 데 사용됩니다.
  • 파이썬 부동 소수점은 정밀도, 범위 및 내부 표현을 정의하는 IEEE 754 부동 소수점 표준을 따릅니다.
  • 정밀도가 제한되어 있기 때문에 부동 소수점 숫자는 산술 연산을 실행할 때 작은 반올림 오류가 발생할 수 있습니다.
x = 3.14
y = -0.75
z = 1.0
sum_xy = x + y # 덧셈 실행, 결과 2.39
product_xy = x * y # 곱셈을 실행하며, 결과는 -2.355입니다.


정리하면, 파이썬은 정수와 소수점이 있는 실수를 각각 나타내는 정수 객체와 실수 객체를 모두 기본으로 지원합니다. 이러한 숫자 유형은 다양한 산술 연산에 사용할 수 있으며 애플리케이션의 요구 사항에 따라 다양한 사용 사례에 적합합니다.


사용자 정의 객체

사용자 정의 객체라고도 하는 사용자 정의 객체는 Python과 같은 프로그래밍 언어에서 직접 생성하는 클래스의 인스턴스입니다. 사용자 정의 객체는 자신만의 데이터 구조를 만들고 속성(속성)과 동작(메서드)을 정의할 수 있는 방법을 제공하여 코드를 보다 체계적이고 모듈화하며 유지 관리하기 쉽게 만들어 줍니다. 사용자 지정 객체는 객체 지향 프로그래밍의 원칙에 따라 단일 엔티티 내에 데이터와 기능을 캡슐화하는 수단을 제공합니다.

다음은 사용자 지정 객체의 몇 가지 예시입니다.

1. 클래스(Classes): 사용자 지정 개체를 만들려면 개체의 청사진인 클래스를 정의해야 합니다. 클래스는 객체가 가질 속성(데이터 멤버)과 메서드(함수)를 지정합니다.

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

    def introduce(self):
        print(f"제 이름은 {self.name}이고 {self.age}세입니다.")


2. 인스턴스화(Instantiation): 클래스를 정의한 후에는 클래스를 함수처럼 호출하여 클래스의 인스턴스(객체)를 만들 수 있습니다. 각 객체는 고유한 속성 및 메서드 집합을 가진 별도의 인스턴스입니다.

person1 = Person("Alice", 30)
person2 = Person("Bob", 25)


3. 어트리뷰트(Attributes): 어트리뷰트는 객체와 연관된 변수로, 해당 인스턴스에 특정한 데이터를 저장하는 데 사용됩니다. 위의 예에서 Person 클래스에는 name과 age라는 두 가지 속성이 있습니다.

4. 메서드(Methods): 메서드는 일반적으로 객체의 속성에 대한 작업을 수행하거나 다른 객체와 상호 작용하는 클래스 내에 정의된 함수입니다. 위의 예에서 소개(introduce) 메서드는 사람의 이름과 나이를 인쇄하는 간단한 함수입니다.

5. 생성자(Constructors): 생성자는 객체가 인스턴스화될 때 호출되는 특수 메서드입니다. 파이썬에서 생성자의 이름은 '__init__'입니다. 이 함수는 주어진 인수를 사용하여 객체의 속성을 초기화합니다.

6. 상속(Inheritance): 사용자 지정 객체는 다른 클래스의 속성 및 메서드를 상속할 수 있으므로 코드를 재사용하고 코드 구조를 보다 체계적으로 구성할 수 있습니다.


클래스 정의와 사용 예시

파이썬에서 클래스는 클래스의 인스턴스인 객체를 생성하기 위한 청사진입니다. 클래스는 클래스의 객체가 가져야 하는 속성(속성)과 메서드(함수)를 정의합니다. Python은 객체 지향 프로그래밍 언어이며, 클래스는 코드를 구성하고 프로그래밍 환경 내에서 실제 엔티티, 개념 또는 구조를 표현하는 데 기본이 됩니다.

다음은 Python의 클래스와 관련된 주요 개념입니다.

1. 클래스 정의하기
'class' 키워드 뒤에 클래스 이름을 사용하여 클래스를 정의합니다. 클래스 이름은 일반적으로 대문자로 시작합니다.

class MyClass:
    pass


2. 어트리뷰트와 메서드
어트리뷰트는 객체에 속하는 속성이고 메서드는 객체에 대해 작업을 실행하거나 객체의 속성을 조작하는 함수입니다. 파이썬에서는 클래스 본문 내에서 어트리뷰트와 메서드를 정의합니다.

class Dog:
    # 클래스 어트리뷰트
    species = "Canis lupus familiaris"

    # 인스턴스 메서드
    def __init__(self, name, age):
        self.name = name # 인스턴스 어트리뷰트
        self.age = age # 인스턴스 속성

    # 인스턴스 메서드
    def bark(self):
        print(f"{self.name} barks!")


3. 생성자
생성자는 객체가 생성될 때 객체의 속성을 초기화하는 __init__라는 특수 메서드입니다. Python에서는 def 키워드 뒤에 __init__를 사용하여 생성자를 정의합니다. 이 메서드는 클래스에서 객체가 생성될 때 자동으로 호출됩니다.

class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = 나이


4. 객체(인스턴스) 생성하기
클래스에서 객체를 생성하려면 클래스를 함수처럼 호출하고 생성자에 필요한 인수를 제공하면 됩니다.

dog1 = Dog("Fido", 3)
dog2 = Dog("Buddy", 5)


5. 어트리뷰트 및 메서드 접근하기
객체의 어트리뷰트에 액세스하거나 메서드를 호출하려면 객체 이름과 함께 점 표기법을 사용합니다.

print(dog1.name) # 출력: Fido
dog2.bark() # 출력: Buddy barks!


파이썬에서 클래스를 이해하는 것은 코드를 구성하고 객체로 효과적으로 작업하는 데 필수적입니다. 클래스를 사용하면 재사용 가능한 모듈식 코드를 작성할 수 있어 유지 관리와 확장이 더 쉬워집니다.


반응형

'Python > Python 기본' 카테고리의 다른 글

[Python] 클래스 응용법(2)  (0) 2023.05.07
[Python] 클래스 응용법  (0) 2023.05.07
[Python] 텍스트(Text), 바이너리(Binary) 데이터  (0) 2023.05.07
[Python] 패키지란?  (0) 2023.05.06
[Python] 모듈이란?  (0) 2023.05.06