50. 파이썬 – 클래스나 변수 등을 포함한 모듈

50. 파이썬 – 클래스나 변수 등을 포함한 모듈

지난 포스팅에서는 파이썬 모듈 에서 name 변수 (if __name__ == “__main__”:) 에 대해 공부해 보았습니다.
이번 포스팅에서는 파이썬 모듈 에서 클래스나 변수 등을 포함한 모듈에 대해 공부해 보겠습니다.

파이썬 모듈

클래스나 변수 등을 포함한 모듈

지난 시간 까지 알아봤던 파이썬 모듈에서는 함수만 포함을 했었지만
클래스나 변수 등을 포함한 모듈도 있습니다.

Python
# module2.py
pi = 3.141592

class Math:
    def solv(self, r):
        return pi * (r **2)

def add(a, b):
    return a + b

위의 코드는 원의 넓이를 계산해 주는 Math 클래스와 두개의 수를 더해주는 add 함수, 원주율 값에 해당하는 pi 변수 처럼 클래스, 함수, 변수 를 모두 포함하고 있습니다.
주석에 표시된 것처럼 module2.py로 저장을 한뒤
가상환경 프롬프트를 실행해서 대화형 인터프리터를 열어서 아래처럼 연습해 보겠습니다.

Python
(py_study_3110) D:\>cd D:\Dropbox.My_Job.Study.Python
(py_study_3110) D:\>cd D:\Dropbox\02.My_Job\80.Study\01.Python\00.study_python_3.11.0\01.TEST

(py_study_3110) D:\Dropbox\02.My_Job\80.Study\01.Python\00.study_python_3.11.0\01.TEST>python
Python 3.11.0 | packaged by Anaconda, Inc. | (main, Mar  1 2023, 18:18:21) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import module2
>>> print(module2.pi)
3.141592
>>>
.study_python_3.11.0.TEST
(py_study_3110) D:\Dropbox.My_Job.Study.Python
(py_study_3110) D:\>cd D:\Dropbox\02.My_Job\80.Study\01.Python\00.study_python_3.11.0\01.TEST

(py_study_3110) D:\Dropbox\02.My_Job\80.Study\01.Python\00.study_python_3.11.0\01.TEST>python
Python 3.11.0 | packaged by Anaconda, Inc. | (main, Mar  1 2023, 18:18:21) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import module2
>>> print(module2.pi)
3.141592
>>>
.study_python_3.11.0.TEST>python
Python 3.11.0 | packaged by Anaconda, Inc. | (main, Mar 1 2023, 18:18:21) [MSC v.1916 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import module2 >>> print(module2.pi) 3.141592 >>>

위에서 작성한 것 처럼 module2.pi 라고 입력을 해서 module2.py 파일에 생성되어 있는 pi 변수 값을 사용을 할 수가 있습니다.

Python
>>> a = module2.Math()
>>> print(a.solv(2))
12.566368
>>>

위 작성한 코드는 module2.py 에 생성되어 있는 Math 클래스를 사용하는 방법을 보여주는 코드입니다.
위처럼 모듈 안에 있는 클래스를 사용하고자 한다면 “.”(도트 연산자)로 클래스 이름 앞에 모듈 이름을 우선 입력해 주어야 합니다.

Python
>>> print(module2.add(module2.pi, 4.4))
7.5415920000000005
>>>

위 코드처럼 module2.py 에 생성되어 있는 add 함수도 사용할 수 있음을 알 수 있습니다.

다른 파일에서 모듈 불러오기

지금까지 직접 만든 모듈 파일을 불러오기 위해서 대화형 인터프리터를 사용했었습니다.
이제 다른 파이썬 파일에서 기존에 만들어 놨던 모듈을 불러서 사용하는 방법에 대해 공부해 보겠습니다.
좀전에 만들어 봤던 module2.py 파일을 다른 파이썬 파일에서 불러와 사용을 해보도록 하겠습니다.

module_test.py 라는 파일을 생성을 해보겠습니다.

Python
# module_test.py
import module2

result = module2.add(3, 4)
print(result)

Python
7

이처럼 다른 파이썬 파일에서 import 문을 통해 module2.py 파일을 module2 모듈로 불러와서 사용을 할 수가 있습니다.
주의해야 할 점은 두 개의 파일. module2.py 와 module_test.py 는 같은 폴더에 존재해야 한다는 것입니다.

  • 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.
50. 파이썬 - 클래스나 변수 등을 포함한 모듈

44. 파이썬 – 곱하기.빼기.나누기 기능 만들기와 생성자(Constructor)

44. 파이썬 – 곱하기.빼기.나누기 기능 만들기와 생성자(Constructor)

지난 시간까지 파이썬 에서 사칙연산 클래스를 만드는 과정중에 더하기 기능까지 만드는 과정에 대해 공부해봤습니다.
이번 포스팅에서는 사칙연산에서 나머지 곱하기.빼기.나누기 기능 만들기와 생성자(Constructor)에 대해서 공부해 보려 합니다.

파이썬 클래스

사칙연산 클래스 만들어 보기 #5

곱하기.빼기.나누기 기능 만들기

곱하기.빼기.나누기 기능을 추가하여 보겠습니다.

Python
>>> class Four_Calculator:
...     def testnumber(self, first, second):
...         self.first = first
...         self.second = second
...     def add(self):
...         result = self.first + self.second
...         return result
...     def multi(self):
...         result = self.first * self.second
...         return result
...     def subtrack(self):
...         result = self.first - self.second
...         return result
...     def divide(self):
...         result = self.first / self.second
...         return result
...
>>>        

이렇게 add (더하기 기능) 에 이어 multi(곱하기), subtrack(빼기), divide(나누기) 를 add 메서드에서 공부한 것 처럼 동일하게 만들어 봤습니다.
이제 정상적인 동작을 하는지 작동을 해보겠습니다.

Python
>>> a = Four_Calculator()
>>> b = Four_Calculator()
>>> a.testnumber(4, 2)
>>> b.testnumber(3, 8)
>>> a.add()
6
>>> a.subtrack()
2
>>> a.divide()
2.0
>>> b.add()
11
>>> b.multi()
24
>>> b.subtrack()
-5
>>> b.divide()
0.375
>>>

이렇게 파이썬 클래스를 이용해 사칙연산 기능(더하기.곱하기.빼기.나누기 기능)을 하는 클래스를 만들어 보았습니다.

생성자(Constructor)

앞서 만든 Four_Calculator 클래스를 아래처럼 사용해 보겠습니다.

Python
>>> a = Four_Calculator()
>>> a.add()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 6, in add
AttributeError: 'Four_Calculator' object has no attribute 'first'
>>>

Four_Calculator 클래스의 인스턴스 a 에 testnumber 메서드를 수행하지 않고 add 메서드를 먼저 수행해 봤습니다.
그 결과는 AttributeError: ‘Four_Calculator’ object has no attribute ‘first’ 라는 오류가 발생하게 됩니다.
그 이유는 testnumber 메서드를 수행을 해야만 a 의 객체변수 first 와 second 가 생성되기 때문입니다.

이렇듯 first, second 같은 초기값을 객체에 설정을 해야하는 경우에는 testnumber 와 같은 메서드를 호출하여 초기값을 설정을 하기 보다는 생성자를 구현하는 것이 좋은 방법입니다.

여기서 생성자(Constructor) 라는 것은 객체가 생성될 때 자동으로 호출되는 메서드를 뜻합니다.

파이썬 메서드 이름으로 __init__ 를 사용하게 되면 이 메서드는 생성자가 됩니다.
아래처럼 Four_Calculator 클래스에 생성자를 추가해 보겠습니다.

__init__ 메서드의 init 앞뒤로 붙은 __ 는 언더바(_) 두 개 를 이어서 쓴 것 입니다.

Python
>>> class Four_Calculator:
...     def __init__(self, first, second):
...         self.first = first
...         self.second = second
...     def testnumber(self, first, second):
...         self.first = first
...         self.second = second
...     def add(self):
...         result = self.first + self.second
...         return result
...     def multi(self):
...         result = self.first * self.second
...         return result
...     def subtrack(self):
...         result = self.first - self.second
...         return result
...     def divide(self):
...         result = self.first / self.second
...         return result
...
>>>

기존 클래스에 새롭게 추가한 __init__ 메서드만 따로 살펴 보겠습니다.

Python
def __init__(self, first, second):
    self.first = first
    self.second = second

__init__ 메서드는 testnumber 메서드와 이름만 다르고 똑같습니다.
메서드 이름만을 __init__ 으로 지정했기 때문에 생성자로 인식이 되며
객체가 생성되는 시점에 자동으로 호출이 된다는 차이점이 있습니다.

다음 코드를 실행해 보겠습니다.

Python
>>> a = Four_Calculator()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: Four_Calculator.__init__() missing 2 required positional arguments: 'first' and 'second'

위처럼 a = Four_Calculator() 를 수행을 하면 생성자 __init__ 이 호출이 되어 위 같은 오류가 발생하게 됩니다.
이렇게 오류가 나는 이유는 생성자의 배개변수 first 와 second 에 값이 전달되지 않았기 때문입니다.
위의 오류를 해결하는 방법은 first 와 second 에 해당하는 값을 전달하면서 객체를 생성하면 됩니다.

Python
>>> a = Four_Calculator(4, 2)

위처럼 수행을 하게 되면 __init__ 메서드의 매개변수에 self 는 생성되는 객체, first = 4, second = 2 의 값이 전달되게 됩니다.

여기서 __init__ 메서드에도 다른 메서드와 마찬가지로 self 에는 첫 번재 매개변수로 생성되는 객체가 자동으로 전달이 되게 됩니다.

결과적으로 __init__ 메서드를 호출하게 되면 이전에 testnumber 메서드를 호출했을 때와 동일하게 first 와 second 라는 객체 변수가 생성이 되게 됩니다.
아래처럼 확인해 보겠습니다.

Python
>>> a = Four_Calculator(4, 2)
>>> print(a.first)
4
>>> print(a.second)
2
>>>

아래처럼 사칙연산 클래스로 만들었던 add, multi, divide, subtrack 의 메서드도 정상적으로 잘 동작하는 것을 확인할 수 있습니다.

Python
>>> a.add()
6
>>> a.multi()
8
>>> a.divide()
2.0
>>> a.subtrack()
2
>>>

이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.

44. 파이썬 - 곱하기.빼기.나누기 기능 만들기와 생성자(Constructor)

파이썬 아나콘다 자동실행 Batch 만들기

파이썬 아나콘다 자동실행 Batch 만들기

아나콘다 자동실행 Batch 를 왜 만들려 하시나요?

저같은 경우엔 무언가 자동화 프로그램을 만들고 싶어 파이썬을 공부하기 시작했습니다
그런데 파이썬으로 프로그래밍을 한 뒤 만들어진 코드를 매일 반복 작업을 하려니
아무것도 모르는 상태에서는 어지간히 번거로운 게 아닙니다.
자동화를 하고 싶어서 프로그래밍을 하는데
그 자동화를 매일 수작업으로 돌려줘야 한다는 슬픈 현실

아나콘다 자동실행 Batch

기존에 파이썬으로 프로그래밍을 할 때 아나콘다를 설치하고 가상환경을 설정한 뒤에
그 가상환경에서 진행하는 것에 대해서 알아봤었습니다.
가상환경에서 진행하는 이유에 대해서는 이전 포스팅을 참고하시면 됩니다.

아나콘다 환경에서 내가 만든 코드를 자동실행 Batch 로 만드는 방법에 대해 알아보겠습니다.
기본 구성은 아래처럼 구성하시면 됩니다.
아래의 코드를 메모장 같은 문서편집기에서 작성하신후
배치파일이름.bat 이런식으로 저장해주시면 됩니다.

set root=[아나콘다 설치 경로]
call %root%\Scripts\activate.bat %root%

call conda activate [설정할 가상환경 이름]
call cd [아나콘다 자동실행 Batch 로 실행할 파이썬 파일이 있는 경로]
call python [실행할 파이썬 파일이름].py

pause

아나콘다 설치 경로

윈도우 10 이나 윈도우 11 이전에는 프로그램을 설치를 하게 되면 거의 대부분이
C:\Program Files 이나 C:\Program Files (x86) 에 설치가 되었습니다.
윈도우가 32비트냐 64비트냐 구분지어서 위처럼 경로가 지정이 되었습니다.
물론 더 그 이전에는 C:\Program Files (x86) 라는 폴더는 필요가 없었죠
어쨌든 지금은 C:\Program Files 이나 C:\Program Files (x86) 도 아닌 다른 폴더에 프로그램이 설치되는 경우가 많습니다.
예를 들면 C:\Users\사용자명\ 처럼 사용자 폴더 밑에 있는 사용자명 폴더에 설치되는 경우가 많습니다.
그래서 설치된 프로그램 경로를 찾으려면 헤매는 경우도 종종 생기기도 합니다.

이럴 때 고민하지 말고 시작메뉴를 눌러봅니다

파이썬 아나콘다 자동실행 Batch 만들기

저 같은 경우는 윈도우 11 이기 때문에 위 화면 처럼 나옵니다.
윈도우 10이라고 하더라도 별반 다르지 않으니 자세한 설명은 생략하겠습니다.
모든 앱 에서 내가 찾고자 하는 아나콘다 프로그램을 찾기 위해 스크롤을 내려 줍니다.
알파벳 순이라 앞쪽에 있네요
아나콘다 네비게이터든 프롬프트든 상관이 없습니다.
어차피 같은 폴더에 있을테니깐요
파일을 선택에 마우스 우클릭을 해줍니다.
그리고 나오는 메뉴에서 기타 를 클릭한뒤
다시 나오는 메뉴에서 파일 위치 열기 를 클릭 해 줍니다.

파이썬 아나콘다 자동실행 Batch 만들기

아래처럼 폴더가 열렸습니다.
그런데 여기서 주의할 점은 지금 열린 폴더는 실제 프로그램이 설치된 폴더가 아니라
아래 동그라미 안에 파일 유형 처럼 바로가기가 만들어진 경로 입니다.

파이썬 아나콘다 자동실행 Batch 만들기

그래서 한번 더 아이콘에서 우클릭을 한번 더 해서 파일 위치 열기를 해줍니다

파이썬 아나콘다 자동실행 Batch 만들기

이제 실제로 아나콘다가 설치 된 경로가 열렸습니다.

파이썬 아나콘다 자동실행 Batch 만들기

위에 빨간 박스로 표시해둔 주소표시줄을 클릭 해줍니다.
그럼 아래 처럼 실제 경로가 선택이 됩니다.
컨트롤+C (Ctrl + c) 로 복사해 주시면 됩니다.

파이썬 아나콘다 자동실행 Batch 만들기

이제 아나콘다 경로를 몰라서 못하시는 없어야 합니다

가상환경 이름 설정(conda env list)

다음은 가상환경 이름 설정입니다.
가상환경 이름 설정은 간단합니다
명령프롬프트를 열어서 아래 명령어를 입력하면 가상환경 리스트가 나오게 됩니다

conda env list

파이썬 아나콘다 자동실행 Batch 만들기

저의 경우에는 ‘py_study_3110’ 이라는 가상환경으로 작업을 진행하기에 py_study_3110 으로 설정했습니다.

파이썬 아나콘다 자동실행 Batch 파일 실행

이제 만들어진 ㅇㅇㅇㅇ.bat 파일을 더블클릭해서 실행시키시면 됩니다.

  • 위 내용은 매직블럭 님의 블로그를 참조했습니다.