객체지향

    [python] 파이썬 class의 __call__ 함수 (매직메소드)

    파이썬을 다루다보면 __call__함수에 직면하는 경우가 생깁니다. 저와 같은 데이터 사이언티스트의 경우에는 __call__함수는 Tensorflow의 def call() 메서드나 PyTorch의 def forward() 메서드가 대표적이라고 할 수 있는데요. 인스턴스를 생성하고 자동으로 클래스의 객체도 호출할 수 있게 만드는 기능입니다. 아래처럼 리스트를 받아 난수 10개를 뿌려주는 난수생성기 클래스로 표현되었다고 생각해봅시다. 인스턴스 메서드 구현 아래처럼 pick 메서드를 활용할 때, 출력물이 생성되고, 10개의 난수를 담은 리스트가 리턴되는 것을 확인할 수 있습니다. import random class RandomNumberReturn: def __init__(self): self.numbers ..

    [python] 클래스 메서드(class method)와 정적 메서드(static method)

    1. 클래스 메서드 (Class Method) 아래의 코드처럼 일반적으로 클래스 내에서 함수를 정의하고 사용하는 메서드는 객체에 소속되는 인스턴스 메서드이다. class Human: def __init__(self, age, name): self.age = age self.name = name def intro(self): print(str(self.age) + "살 " + self.name + "입니다.") park = Human(13, "박진명") park.intro() Human 클래스의 intro 메서드는 첫 번째 인수 self를 받아 이 객체에 대한 작업을 수행한다. 따라서, park 객체에 대해 호출되며, 해당 인스턴스의 나이와 이름을 조사하여 출력한다. 즉 park.intro() 메서드에서 ..

    [python] 파이썬 Class 내 self.<variable name>에서 self 키워드는 어떤 역할을 할까?

    파이썬 클래스를 처음 접하다보면, 추상적인 개념에 적잖이 당황할 수도 있습니다. 특히 class를 만들 때, class안에 함수를 정의할 때 self 라는 키워드를 많이 보셨을 겁니다. 이 self는 굉장히 중요한 역할을 하게 되는데, 무엇을 의미하는지 간단하게 알아보도록 하겠습니다. self라는 키워드는 클래스가 만들어진 이후, 인스턴스로서 활용될 때 굉장히 중요한 역할을 합니다. 이때 class variable과 instance variable에 대해 알아야 할 필요가 있는데, 간단하게 말해서 self가 활용된다면 이는 곧 class 전역에 영향을 미치는 것이 아닌 인스턴스에만 국한되어 작동하게 됩니다. 예시 1) class_variable vs instance_variable 코드를 보면서 살펴보겠..

    파이썬과 객체지향 (python and class) 3 - 생성자(__init__, initializer)

    파이썬을 하다보면 __init__ 이라는 친구를 종종 만나실 수 있습니다. 많은 경우에서 class안에서 가장 처음으로 정의하는 함수 이기도 하죠. 파이썬에서 이친구는 생성자(initializer)라고 불립니다. 이 생성자는 어떨때 쓰일까요? 아래 예제를 통해 한번 살펴보겠습니다. # 자동차 class를 만들어보자. class Car: def set_car_spec(self, brand: str, model: str): self.brand = brand self.model = model def info(self): context = {'brand': self.brand, 'model': self.model} print(context) # ***여기서 self는 class 자체를 지칭한다. my_car =..

    파이썬과 객체지향 (python and class) 2

    파이썬의 class 지난 포스팅에서도 언급했다시피 class는 객체모델링의 수단입니다. 현실세계의 객체를 프로그래밍적으로 묘사하는 방법이죠. 이번 포스팅에선 학생이라는 현실 세계의 개체를 객체를 프로그래밍으로 표현해보겠습니다. 클래스를 만들 때, 두가지 관점에 유의하면 좋습니다. 상태 (인스턴스) 행위 (메서드) 좀 더 구체적으로 묘사하며 학생을 떠올려보겠습니다. 학생은 학년이 있을것이며, 학번이 있고, 전공, 학교, 키, 몸무게, 이름, 주소 등등 여러가지 상태를 갖고 있을 것입니다. 이러한 상태는 “변수”를 만들어줘서 저장을 하게 되는데 이것을 파이썬에서는 “instance variable (인스턴스)” 라고 부른다. (자바나 다른 언어에선 다른 방식으로 이런 상태를 부른다고 합니다) 그렇다면 행위엔..

    파이썬과 객체지향 (python and class) 1

    음.. 필자와 같은 비전공자 출신이 처음 프로그래밍을 접했을 때 당황하는 모먼트가 분명 몇가지 있으리라 생각한다. 혹자가 “처음 프로그래밍을 접하면서 가장 이해 하기 힘든 개념이 무엇이었나요?”라고 묻는다면, 나는 주저없이 class에 관해 얘기를 하지 않을까 싶다. 머릿속으로 이해를 해도 쉽게 생각한 부분이 이미지로 형상화가 잘되지않으며, class안에 있는 속성(instance)와 행위 (method)는 코딩을 할때마다 다시금 “이해를 하고 지금 코딩을 하는것인가?”라고 생각하게 만들었다. 간략하게 필자가 이해한 절차적 프로그래밍(aka 구조적 프로그래밍, 함수지향적 프로그래밍)를 언급, 비교하면서 이번 파이썬의 객체지향에 대해 알아보겠습니다. 절차적 프로그래밍 대표적인 언어: c하나의 기능을 다시 ..