클래스는 데이터(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

+ Recent posts