[개념공부]__init__이란?

여주링·2021년 4월 5일
0

TIL

목록 보기
13/13
post-custom-banner

👩‍💻 아, 그거 뭔지 아는데..라는 작은 개념들을 한번 다 정리해보는 시간

1. __init__.py

👉패키지를 읽을 때 어떤 처리를 수행해야 하거나 패키지 내부의 모듈들을 한꺼번에 가져오고 싶을때 사용한다. 패키지 폴더 내부에 __init__.py파일을 만들어 사용한다.

#패키지 폴더 내부에 __init__.py만들었다
.
│─── package
│    ├── __init__.py
│    ├── module_a.py
│    └── module_b.py
└─── main.py

패키지를 읽어 들일 때 __init__.py를 먼저 읽고 실행한다.

#__init__.py

#모듈을 읽어들일때 가져올 모듈
__all__ = ["module_a","module_b"]

#패키지를 읽어 들일 때 처리를 작성할수도 있음
print("패키지를 읽어들였음")

main.py에도 해당 패키지파일을 읽어들이는 로직을 작성한다

#main.py

#패키지 내부의 모듈을 모두 읽어들인다
from package import *

#모듈 내부의 변수를 출력한다
print(module_a)
print(module_b)

명령어로 main.py를 실행하면

패키지를 읽어들였음
module_a실행**텍스트**
module_b실행

2. class 속 __init__(매서드)

👉 초기화 매서드라고도 한다!

python 클래스 내부에 __init__라는 함수를 만들면 객체를 생성할때 처리한 내용을 작성할 수 있다.

class 클래스 이름:
	def __init__(self, 추가적인 매개변수)

__init__(self)은 객체를 생성할 때 자동으로 호출되는 ⭐️특수한 메소드⭐️이고 반드시 첫 번째 인자는 self 이어야 한다. 이 메소드 내부에 클래스 변수를 생성할 수 있다.

class Cake:
    def __init__(self):
        self.apple = 2
        self.kiwi = 2

이제

>>> fruit = Cake()

Robot객체를 생성하면 nLegs 와 nArms 필드가 생성되고 초기화 되었음을 알 수 있다.

>>> fruit.apple
2
>>> fruit.kiwi
2

객체의 필드를 확인하고 싶다면 내장 함수 vars()를 이용하면 된다.

>> vars(fruit)
{'apple': 2, 'kiwi': 2}

객체를 생성할 때 이름을 사용자가 입력하도록 하려면 다음과 같이 __init__()메소드에 일반 인자를 self 뒤에 주면 된다.

class Cake:
    def __init__(self, name):
        self.apple = 2
        self.kiwi = 2
        self.name = name

이제 객체를 생성할 때 이름을 반드시 입력해야 한다.

>>> fruit=Cake('fruit')
>>> fruit.name
'fruit'

만약 이름이 주어지지 않았을 때 ‘orange’ 라는 이름을 주고 싶다면 다음과 같이 기본값 인자를 사용하면 된다.

class Cake:
    def __init__(self, name=’orange’):
        self.apple = 2
        self.kiwi = 2
        self.name = name

이제 객체를 생성할 때 이름을 입력하지 않아도 된다.

>>> fruit=Cake()

>>> fruit.name

'orange'

__init__()도 파이썬의 일반 함수처럼 가변 개수 인자, 기본값 인자, 키워드 인자 등을 적용할 수 있다!!

profile
🌱Backend Developer👩‍💻
post-custom-banner

0개의 댓글