본문 바로가기

programming

[Python] 객체, 클래스, 인스턴스 다루기

객체 : 성질(변수), 할 수 있는 행동(함수)이 담긴 지표

       : 필요한 변수와 함수가 담긴 지표

 

클래스 : 객체를 만들 수 있는 틀 

           객체가 갖고있는 변수 = 필드

           객체가 행하는 함수 = 메서드

 

인스턴스 : 클래스라는 틀로 찍어낸 객체, 피조물

 

 

1. 클래스 정의 하기

class Human():
	name = "Undefined"
    age = 0
    def birth(self):
    	print("응애")

Human 이라는 클래스를 만들었다.

name 과 age를 변수로 갖는다.

초기값을 지정해 주었다.

birth라는 함수 = 메서드를 갖는다.

birth(self)에서 "self"는 이 정의가 메서드라는 걸 알려준다.

 

 

2. 위에서 정의한 Human이라는 클래스 틀로 Jane이라는 객체를 찍어냈다.

찍어낸 객체인 Jane 이 바로 인스턴스이다.

Jane = Human()
Jane.name = Jane Kim
Jane.age = 10
Jane.birth()
# 결과 : 응애

Human에서 정의한 name 과 age 변수를 재정의 또는 사용하려면

Jane.name / Jane.age 로 사용할 수 있다.

메서드 또한 Jane.birth로 사용할 수 있다.

 

※헷갈렸던 부분

 

1. 한 객체의 메서드에서 그 객체의 필드를 참조할 땐 self를 이용해서 참조해야 한다.

= 클래스를 생성하면서 내부에 정의한 변수를 메서드에서 받아서 사용할 때

class Human():
	age = 10
    def introduce(self):
    	print(self.age, "살 입니다")

Jane = Human()
Jane.introduce() 

# 결과 : 10살 입니다.

 

2. 매개변수를 입력받는 경우의 메소드 정의 방법

= 클래스를 생성하면서 내부에 정의한 변수를 메서드에서 받아서 사용 + 매개변수 입력이 필요한 메서드

class Human():
    name = "Ud"
    age = 0
    def introduce(self, a,b):
        self.name = a
        self.age = b
        
Jane = Human()
Jane.introduce("제인",3)
print(Jane.name,"입니다.",Jane.age, "살 입니다.")

# 결과 : 제인 입니다. 3 살 입니다.