클래스 정의는 객체지향 프로그래밍의 핵심 개념중 하나입니다. 클래스는 객체의 상태(속성)와 동작(메서드)을 정의 하는 객체의 청사진입니다.
'class' 키워드를 사용합니다.
class Dog:
# 클래스 변수 (모든 인스턴스가 공유하는 변수)
species = "Canis familiaris"
# 생성자 메서드 (인스턴스를 초기화하는 메서드)
def __init__(self, name, age):
self.name = name # 인스턴스 변수
self.age = age # 인스턴스 변수
# 인스턴스 메서드 (인스턴스와 관련된 행동을 정의)
def bark(self):
return f"{self.name} says woof!"
# 인스턴스 메서드 (인스턴스의 상태를 변경)
def get_older(self):
self.age += 1
# 클래스 메서드 (클래스 자체와 관련된 행동을 정의)
@classmethod
def species_name(cls):
return cls.species
# 정적 메서드 (클래스와 인스턴스와는 독립적으로 동작)
@staticmethod
def dog_fact():
return "Dogs have been human companions for over 14,000 years."
클래스의 구성요소
1. 클래스 변수: 모든 인스턴스가 공유하는 변수입니다. 클래스 선언 내에 직접 정의됩니다.
species = "Canis familiaris"
2.인스턴스 변수: 각 인스턴스마다 개별적으로 유지되는 변수입니다. 생성자 메서드 __init__에서 self를 통해 정의됩니다.
self.name = name
self.age = age
3.생성자 메서드: 클래스의 인스턴스를 초기화하는 특별한 메서드입니다. __init__ 메서드가 그것입니다.
def __init__(self, name, age):
4.인스턴스 메서드: 인스턴스와 관련된 행동을 정의하는 메서드입니다. 첫 번째 인수로 self를 받습니다.
def bark(self):
5.클래스 메서드: 클래스 자체와 관련된 행동을 정의하는 메서드입니다. 첫 번째 인수로 cls를 받으며, @classmethod 데코레이터를 사용합니다.
@classmethod
def species_name(cls):
6.정적 메서드: 클래스나 인스턴스와 독립적으로 동작하는 메서드입니다. @staticmethod 데코레이터를 사용합니다.
@staticmethod
def dog_fact():
예제 사용
클래스를 정의한 후에는 이를 사용하여 인스턴스를 만들 수 있습니다.
# Dog 클래스의 인스턴스를 생성
dog1 = Dog("Buddy", 5)
dog2 = Dog("Molly", 3)
# 인스턴스 메서드 호출
print(dog1.bark()) # Buddy says woof!
print(dog2.bark()) # Molly says woof!
# 인스턴스 변수 접근
print(dog1.age) # 5
# 인스턴스 변수 변경
dog1.get_older()
print(dog1.age) # 6
# 클래스 메서드 호출
print(Dog.species_name()) # Canis familiaris
# 정적 메서드 호출
print(Dog.dog_fact()) # Dogs have been human companions for over 14,000 years.
클래스를 정의하고 사용하는 기본 사항을 보여줍니다. 클래스는 코드 재사용성과 구조를 용이하게 하여 복잡한 프로그램을 효율적으로 작성할 수 있도록 해줍니다.
'Swift '문법'' 카테고리의 다른 글
Set (0) | 2024.07.08 |
---|---|
Enum(Enumeration) (0) | 2024.07.05 |
튜플(tuple) (0) | 2024.07.03 |
스택(Stack) 큐(Queue) (0) | 2024.07.02 |
옵셔널 체이닝 (Optional Chaining) (0) | 2024.07.01 |