파이썬-객체란?
파이썬은 객체(Object)지향 프로그래밍의 대표중 하나이다. 파이썬 내의 모든 것은 객체의 속성을 갖는 것이다.
객체 지향 프로그래밍(Object-Oriented Programming, OOP)는 컴퓨터 프로그래밍의 패러타임의 하나이며, 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다.
객체에는 "타입, 속성, 조작법"의 특징이 있다. 어떤 연산자(operator)와 조작(method)이 가능한지, 어떤 상태(데이터)를 가지는지, 어떤 행위(함수)를 할 수 있는지의 특징이다. 모든 객체는 특정 타입의 인스터스이며, 속성과 메서드를 갖게 된다. 속성(Attribute)는 객체의 상태나 데이터를 뜻하며(ex. name.self) 메서드(Method)는 특정 객체에 적용할 수 있는 행위를 뜻한다. 편의상 함수라고 생각할 수 있겠다.
우리는 객체지향을 알아야 비로소 클래스(Class)에 대해 들어갈 수 있다. class는 객체들의 분류를 정의할 때 쓰이는 키워드로, 클래스 내부에는 데이터와 함수를 정의할 수 있다. 이때 데이터는 속성, 함수는 메서드라고 불린다. 정의된 클래스에 속하는 객체를 해당 클래스의 인스턴스라고 한다.
하나의 클래스를 만들기 우해서는 인스턴스 객체가 생성될 때 호출되는 함수인 '생성자(Constructor) 메서드'를 먼저 선언해주어야 한다. 생성자를 활용하면 인스턴스가 생성될 때 인스턴스의 속성을 정의할 수 있다.
그리고 원하는 기능을 수행할 수 있는 메서드를 넣어주는 것이다. 다시 말해 속성을 정의해 준다고 할 수 있겠다.
class sayhello:
def __init__(self, name):
self.name = name
def hello(self):
print("Hello world")
위와 같은 클래스가 지정되었다. 클래스의 이름은 sayhello이며, 인스턴스 객체는 __init__를 통해 생성되는 것이다. 여기서 __init__는 name 하나만을 받게 된다. 그리고 새로운 메서드의 이름을 hello라고 하고, "Hello world"라는 말을 출력하도록 설정했다.
hi=sayhello("hi")
hi.hello()
그리고 이렇게 객체를 생성한다. 위의 코드를 직접 살펴보자. hi라는 객체에 sayhello("hi")를 넣어준다. 이 코드를 통해 class 내부의 __init__로 넘어가게 되고 name은 "hi"가 된다. 이제 sayhello에 hi라는 객체가 생성된 것이다.
새로운 메서드 사용을 위해 hi.hello()를 불러준다. 이 코드를 통해서 class 내부의 hello 메서드로 넘어가게 된다. hello 메서드 안에서의 함수는 "Hello world"를 출력하는 것이 다이다. 따라서 결과창으로 Hello world가 나오게 되는 것이다.
이것이 객체의 가장 기본적인 개념이며, 가장 기본적인 활용이다.
객체를 사용하면 더 복잡한 코드를 간단하게 정리할 수 있다. 이를테면 여러 함수를 사용하는 것과 같다. 하지만 방법이 어렵고 처음 보면 이해가 힘들어서 많은 사람들이 어려워하는 부분 중 하나이다. 그래서 더 많은 복습과 공부가 필요한 것이다.