1. 클래스와 객체
1.1 클래스란?
클래스는 객체 지향 프로그래밍의 기본 개념으로, 객체를 정의하기 위한 설계도 같은 느낌이다.
클래스는 속성(데이터)과 (메서드)함수로 구성된다.
1.1.1 속성(Attributes)
클래스 내의 변수로, 객체의 상태나 특성을 나타냅니다.
1.1.2 메서드(Methods)
클래스 내의 함수로, 객체의 동작을 정의합니다.
1.2 클래스 정의 방법
class 키워드를 사용하여 클래스를 정의한다.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
print(f"Hello, my name is {self.name} and I am {self.age} years old.")
1.3 객체란? (인스턴스)
객체는 클래스에서 정의한 틀을 바탕으로 생성된 것이다.
객체는 클래스의 인스턴스라고 하며, 속성과 메서드를 가진 것이다.
1.3.1 객체 생성 방법
객체를 생성하려면 클래스 이름을 함수처럼 호출하면 된다.
# Person 클래스의 인스턴스 생성
person1 = Person("Alice", 30)
# 메서드 호출
person1.greet() # 출력: Hello, my name is Alice and I am 30 years old.
2. 클래스 속성과 인스턴스 속성
속성(Attributes)은 객체가 가지고 있는 데이터를 의미한다. 클래스를 통해 생성된 객체는 해당 클래스의 인스턴스이며, 각 인스턴스는 고유한 속성을 가질 수 있다. 속성은 객체의 상태를 나타내며, 변수를 통해 해당 객체에 연결된다.
2.1 클래스 속성
클래스 자체에 속하는 속성으로, 클래스에 의해 생성된 모든 객체가 공유한다.
클래스 속성은 클래스 이름을 통해 접근할 수 있으며, 모든 인스턴스에서 동일한 값을 가진다.
class Person:
species = "Homo sapiens" # 클래스 속성
def __init__(self, name, age):
self.name = name # 인스턴스 속성
self.age = age # 인스턴스 속성
def greet(self):
print(f"Hello, my name is {self.name} and I am {self.age} years old.")
2.2 인스턴스 속성
각 객체(인스턴스)에 속하는 속성으로, 객체마다 독립적으로 존재한다.
인스턴스 속성은 __init__ 메서드 내에서 self 키워드를 사용하여 정의
class Person:
def __init__(self, name, age):
self.name = name # 인스턴스 속성
self.age = age # 인스턴스 속성
def greet(self):
print(f"Hello, my name is {self.name} and I am {self.age} years old.")
3. 메서드
메서드는 객체의 동작을 정의하는 함수이다.
크게 3가지로 나뉜다. ( 인스턴스 메서드, 클래스 메서드, 정적 메서드 )
3.0 생성자 메서드
클래스의 인스턴스가 생성될 때 자동으로 호출되는 특별한 메서드
인스턴스 속성의 초기값을 설정하는 데 주로 사용된다.
3.0.1 생성자 메서드 역할
- 클래스 인스턴스가 생성될 때 자동으로 호출
- 인스턴스 속성의 초기값을 설정
- 초기화 과정에서 필요한 추가적인 작업을 수행할 수 있다.
3.0.2 생성자 메서드 정의
항상 self 매개변수를 첫 번째 인자로 받아야 하며, 클래스가 호출될 때 전달된 인자들을 받을 수 있다.
class Person:
def __init__(self, name, age):
self.name = name # 인스턴스 속성 설정
self.age = age # 인스턴스 속성 설정
def greet(self):
print(f"Hello, my name is {self.name} and I am {self.age} years old.")
3.1 인스턴스 메서드
객체의 동작을 정의하며, 객체의 속성을 조작할 수 있다.
인스턴스 메서드는 클래스 내부에 정의되며, 첩 매개변수로 항상 self 매개변수를 받는다.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self): # 인스턴스 메서드이다.
print(f"Hello, my name is {self.name} and I am {self.age} years old.")
3.2 클래스 메서드
클래스 자체에 적용되는 메서드로, 클래스 속성을 조작할 수 있다.
@calssmethod 데코레이터를 사용하여 정의
첫 매개변수로 항상 cls를 받는다. ( 호출된 클래스 자신을 가리킨다. )
class Person:
species = "Homo sapiens" # 클래스 속성
def __init__(self, name, age):
self.name = name
self.age = age
@classmethod
def get_species(cls):
return cls.species
print(Person.get_species()) # 출력: Homo sapiens
person1 = Person("Alice", 30)
print(person1.get_species()) # 출력: Homo sapiens
3.3 정적 메서드
클래스나 인스턴스의 상태와 무관한 메서드이다.
@staticmethod 데코레이터를 사용하여 정의한다.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
@staticmethod
def is_adult(age):
return age >= 18
print(Person.is_adult(20)) # 출력: True
person1 = Person("Alice", 30)
print(person1.is_adult(16)) # 출력: False
'Language > Python' 카테고리의 다른 글
[Python] 매직 메소드 (0) | 2024.04.28 |
---|---|
[Python] 클래스 (2/2) (0) | 2024.04.28 |
[Python] 패키지 설치 및 관리 (0) | 2024.04.27 |
[Python] 모듈과 패키지 (0) | 2024.04.27 |
[Python] 예외 처리 (0) | 2024.04.27 |