Study/Python

[python]객체(object)와 클래스(class)

seomj 2021. 1. 13. 17:56

객체(object)

컴퓨터 과학에서 객체 또는 오브젝트(object)는 클래스에서 정의한 것을 토대로 메모리(실제 저장공간)에 할당된 것으로 프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간을 의미하며, 변수, 자료 구조, 함수 또는 메소드가 될 수 있다. 프로그래밍 언어는 변수를 이용해 객체에 접근하므로 객체와 변수라는 용어는 종종 함께 사용된다. 그러나 메모리가 할당되기 전까지 객체는 존재하지 않는다.

 

객체는 정의해두면 원할 때마다 사용 가능하다.

객체는 클래스의 인스턴스다. (객체지향 프로그래밍)

 

 

클래스(class)

객체 지향 프로그래밍(OOP)에서 특정 객체를 생성하기 위해 변수와 메소드를 정의하는 일종의 틀

 

 

객체와 클래스

클래스는 정의이며 객체는 그 정의를 현실에서 구현한 인스턴스라고 이해하면 쉽다.

여기서 객체 함수를 메서드(method)라고 한다.

 

객체가 어떤 형태를 가지며 어떻게 동작해야 하는지에 대해 클래스로 정의해두고,

필요할 때마다 그 클래스의 인스턴스를 생성하면 된다

 

간단한 코드로 더 자세히 설명하겠다.

 

#class for a dog project
class Dog:
    
    #dogs can bark()
    def bark(self):
        print('woof!')
        pass
    
    pass
sizzles = Dog()
sizzles.bark()

sizzles = Dog()

sizzles 변수에 Dog()를 호출한 결과를 할당한 것이다.

여기서 Dog()는 일반적인 함수가 아니라 Dog라는 클래스의 인스턴스를 생성하는 특별한 함수이다.

이렇게 생성되는 것을 객체라고 한다.

Dog 클래스의 정의로부터 sizzles라는 객체를 생성한 것으로 sizzles라는 객체는 개로 간주해도 될 것이다.

이러한 객체를 클래스의 인스턴스라고 한다. 

 

sizzles.bark()

sizzles 객체에 대해 bark() 함수를 호출하고 있다.

Dog 클래스로부터 생성된 모든 객체는 bark() 함수를 가질 수 있다.

Dog 클래스의 정의 내에 bark() 함수가 존재하기 때문이다.

 

정리하자면

sizzles는 Dog 클래스의 형태를 가지고 생성된 객체이며 이러한 객체를 클래스의 인스턴스라고 한다.

bark()라는 함수는 Dog 클래스에 추가되었는데, 이 클래스로부터 생성된 sizzles 객체는 이 메서드를 가지게 된다.

 

더 자세한 코드를 살펴보도록 하자.

#개 객체를 위한 클래스
class Dog:
    
    #내부 데이터 초기화
    def __init__(self, petname, temp):
        self.name = petname
        self.temperature = temp
     
    #상태 확인
    def status(self):
        print("dog name is", self.name)
        print("dog temperature is", self.temperature)
        pass
    
    #온도 설정
    def setTemperature(self, temp):
        self.temperature = temp
        pass
    
    #개가 짖는다
    def bark(self):
        print("woof!")
        pass
    
    pass

Dog 클래스에 3개의 새로운 함수를 추가하였다.

 

__init__(self, petname, temp)

파이썬에서는 객체가 최초로 생성될 때 __init__() 함수를 호출하도록 약속되어 있다.

객체를 생성하는 순간에 무언가를 준비하게 해 해당 객체가 실제로 사용되기 전에 준비 완료 상태를 만들어주는 함수라고 이해할 수 있다.

초기화를 해주는 함수라는 의미이며 여러 객체지향 언어에서 생성자라고 부르기도 한다.

 

__init__() 함수는 self.name과 self.temperature라는 2개의 변수를 생성하였으며

petname과 temp라는 2개의 매개변수를 통해 전달 받은 값이 이들 변수의 실제 값이 된다.

self. 부분은 이 변수들이 객체의 일부, 즉 자기 자신의 일부라는 것을 의미한다.

 

status(self)

 

setTemperature(self, temp)

temp라는 1개의 매개변수를 통해 self.temperature 변수의 값을 설정한다.

객체를 생성한 뒤에도 언제라도 객체의 온도를 변경할 수 있다는 것을 의미한다.

 

self는 지금 정의하고자 하는 함수가 self라고 일컬어지는 객체에 속한다는 것을 명확히 하는 역할을 한다고 생각하면 된다.

 

Dog 클래스의 객체로 lassie라는 객체를 생성해보자.

이름 : Lassie

온도 : 37

status() 함수를 통해 개의 이름과 온도를 출력하는 것을 확인하였다.

 

 

 

출처

전반적인 내용 :

신경망 첫걸음 / 타리크라시드지음 / 한빛미디어

객체 개념 :

ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)

클래스 개념 :

ko.wikipedia.org/wiki/%ED%81%B4%EB%9E%98%EC%8A%A4_(%EC%BB%B4%ED%93%A8%ED%84%B0_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D)

 

'Study > Python' 카테고리의 다른 글

[python]집합(set)  (0) 2021.01.31
[python]딕셔너리 추가,삭제 및 주의사항  (0) 2021.01.31
[python]리스트 수정 및 다양한 함수  (0) 2021.01.31
[python]함수 find와 index  (0) 2021.01.31
[python]문자열 포매팅  (0) 2021.01.31