👩💻 아, 그거 뭔지 아는데..라는 작은 개념들을 한번 다 정리해보는 시간
__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실행
__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__()
도 파이썬의 일반 함수처럼 가변 개수 인자, 기본값 인자, 키워드 인자 등을 적용할 수 있다!!