목록Python | Web (15)
내가 보려고 만든 블로그

from torchvision import datasets datasets.MNIST(~~~) torchvision에서 제공하는 mnist 데이터셋으로 연습을 하려고 하다가 문득 궁금증이 들었다. torchvision의 소스코드를 확인해보았더니 dataasets 라는 디렉토리 안에 mnist.py 가 존재하고 , mnist.py 안에 MNIST 클래스가 존재하였다. 즉, datasets.mnist.MNIST 인데 어떻게 datasets.MNIST 만으로 MNIST 클래스가 불러와지는지가 궁금해졌다. datasets의 __init__.py 안에서 다음과 같은 코드를 찾을수가 있었다. __init__.py는 파이썬 파일을 패키지로 인식할 수 있도록 도와주는 파일로 알고있다. 이 __init__.py 에 위 ..

Decorator 는 이름 그대로 함수를 장식하는 역할을 한다. 다음과 같이 "Hello World"를 출력하는 간단한 함수, HelloWorld를 만들었다. 추가로 func라는 인자를 받는 Decorator라는 함수를 만들어주었다. 파이썬에서는 func 라는 이름으로 함수를 인자로 받을수 있다. 이 Decorator라는 함수에 Wrapper라는 이름으로 인자로 받아 실행하게 되는 func 함수의 앞 , 뒤에 print를 넣어 데코레이터의 동작여부를 체크하고 최종적으로 Wrapper를 return 할 수 있도록 하였다. 이제 이 Decorator에 수식할 함수 HelloWorld를 넣어주고 호출해보면 다음과 같이 "Hello World"의 앞, 뒤에 데코레이터가 동작하는 것을 볼 수있다. 히지만 이 방법..

정의부터 말하자면 클래스 내에 __get__ , __set__ , __delete__ 등의 매직메소드가 존재할때 이 클래스를 이용하여 생성한 객체를 디스크립터라고 한다. 그렇다면 __get__ ,__set__ , __delete__ 는 무슨 역할을 할까?? 다음과 같이 3가지의 매직메소드를 가지고 있는 AGE 클래스를 선언하였다. 그리고 다음과 같이 이 클래스를 객체로 생성한 것을 포함하고 있는 Age_of_someone 클래스를 생성하였다. 1. __get__ 에 의하여 객체를 부르기만 하더라도 __get__ 메소드가 실행되는 것을 확인할 수 있다. 2. __set__ 에 의하여 = 을 통해 새로운 값을 할당할 경우 __set__ 이 실행됨을 알 수 있다. 3. __delete__ 에 의하여 del 이..

자바에서 클래스내 속성, 메소드 값에 접근하기 위한 제한자들 , Private , Protected 등을 많이 접하였을 것 이다. 어떤 클래스의 외부에서 이러한 접근제한자들이 걸려있는 속성에 대하여 직접적인 접근을 막고 메소드등에 접근하기 위해서 getter, setter 등을 사용하도록 하는 패턴들을 많이 볼 수 있다. 파이썬에서도 이러한 getter , setter 등을 간편하게 구현해주는 방법이 있다. 바로 Property 와 Setter 이다. 다음과 같이 getter 에 해당하는 부분에는 @property 의 데코레이터를 setter 에는 @메소드이름.setter 를 해주면 간단하게 구현할 수 있다. 다음과 같이 _age라는 속성만이 클래스에 존재하기 때문에 오류가 발생해야하지만 Age.age ..

Generator 는 iterator를 생성 하는 함수이다 . iterator 라 하면 다음과 같은 For 문을 이용하여 많이 사용을 해보았을 것이다. for i in range(5): print(i) Generator는 iterator 와 반복해서 수행을 한다는 점에서는 같지만 몇가지 다르고 유용한 점을 가지고 있다. 가장 먼저 generator 는 yield 를 이용하여 생성하며 next() 를 이용해서 접근할 수 있다. 또한 list comprehension 에서 [] 대신 () 를 사용하게 되면 generator를 반환하게 된다. 그렇다면 generator 를 어떨때 사용해야 하는 것이고 왜 필요한 것일까?? 그 목적은 바로 메모리 관리에 있다. sys를 이용하여 메모리의 사용량을 체크해보자. L..