클래스는 데이터(Attribute)와 그 데이터를 처리하는 함수(def, Method)를 하나로 묶는 '틀'
클래스를 통해 생성된 실체를 인스턴스(Instance) 또는 객체(Object)라고 부름.
주요 구성요소 및 용어
속성(attribute) : 객체 내부 정의 된 변수
메서드(method) : 클래스 내부에 정의된 함수
생성자(__init__) 객체가 생성될떄 자동으로 호출되어 초기값을 설정하는 특수 메서드
self : 메서드 내부에서 현재 객체 자신을 가리키는 첫번째 매개변수
인스턴스(instance) : 클래스를 통해 생성된 객체
간단한 클래스를 만들어보자
class Dog:
name = "Sally"
species = "Retriever"
dog = Dog()
dog.name
>>> 'Sally'
dog.species
>>> 'Retriever'
여기서
Atrribute는 name과 species이다. 왜냐하면 클래스 내부에서 정의된 변수이기 때문.
Attribute도 결국에는 변수이기때문에 바꿀수 있음.
class Dog:
name = "Sally"
species = "Retriever"
dog = Dog()
dog.name
>>>'Sally'
dog.species
>>>'Retriever'
dog.name = "Peter"
dog.species = "German Shepherd"
dog.name
>>> 'Peter'
dog.species
>>> 'German Shepherd'
하지만 이렇게 하면 모든 강아지의 이름이 Sally로 고정 그래서 이름을 바꿀려면 매번 위에처럼 이름을 할당해주거나,
여러개의 Class를 지정해줘야함.
class Dog:
name = "Sally"
species = "Retriever"
dog1 = Dog()
dog2 = Dog()
dog3 = Dog()
dog1.name
>>> 'Sally'
dog2.name
>>> 'Sally'
dog3.name
>>> 'Sally'
이럴때 __init__이라는 특수 메서드(함수)를 사용
class Dog:
def __init__(self, name, species):
self.name = name
self.species = species
dog1 = Dog(name = "Alice", species = "Retriver")
dog2 = Dog("Bob", "Sheperd")
dog3 = Dog("Charile", species = "Mixed")
dog1.name
>>> 'Alice'
dog1.species
>>> 'Retriever'
dog2.name
>>> 'Bob'
dog2.species
>>> 'Sheperd'
dog3.name
>>> 'Charile'
dog3.species
>>> 'Mixed'
키워드 인자(Keyword Argument) 뒤에 위치 인자(Positional Argument)가 올 수 없음.
__init__ 은 객체를 생성한 순간 : dog1= Dog()를 한 순간 각 객체마다 별도로 가지는 고유 데이터 를 가질 수 있음.
이제 Class에 함수를 추가하자(method)
아래는 개의 이름과 종을 출력하는 display_Dog 함수(메서드)를 추가했다.
class Dog:
def __init__(self, name, species):
self.name = name
self.species = species
def display_Dog(self) :
print(f'Dog name is {self.name}, species is {self.species}')
dog1 = Dog(name = "Alice", species = "Retriver")
dog1.display_Dog()
>>> Dog name is Alice, species is Retriver
여기서 주의 할점은 self.name 대신 name이나 self.species대신 species라고 적으면 안된다.
왜냐하면 name, species은 __init__ 메서드 안에서 정의된 지역변수이기 때문이다.
여기서 인스턴스는 Dog() 클래스로 생성된 dog1인데, self는 dog1 자기 자신을 뜻한다.
클래스 안에서는 dog1을 self라고 부름.
외부로 부터 Class를 import할 수 도 있다.
만약 아래와 같은 class를 Dog.py로 저장했다고 해보자
>>>Dog.py
class Dog:
def __init__(self, name, species):
self.name = name
self.species = species
def display_Dog(self) :
print(f'Dog name is {self.name}, species is {self.species}')
그럼 Dog.py 같은 경로에서 아래와 같이 import 해서 사용 가능
from Dog import Dog
dog1 = Dog("Alice", "Poodle")
dog1.display_Dog()
>>>Dog name is Alice, species is Poodle
'Python' 카테고리의 다른 글
| Python - __call__ (0) | 2026.04.13 |
|---|---|
| Python - lambda함수 (0) | 2026.04.13 |