from IPython.core.display import HTML
12wk-1: 클래스공부 2단계 – __init__
import
클래스공부 1단계: 메소드 (복습)
class JungKKuckMa:
def show(self):
= self.html_str.format(
_str = self.title,
ttl = self.imgurl,
url = self.ques,
Q = self.ans,
A = self.highlight
hl
) display(HTML(_str))
= JungKKuckMa() pp2023
= '파이썬 프로그래밍 중간고사 패배는 괜찮다.'
pp2023.title = 'https://github.com/guebin/PP2023/blob/main/posts/03_Class/PP2023mid.jpg?raw=true?'
pp2023.imgurl = "Q: 파이썬 프로그래밍 기말고사, 어떤 점에 유의해야 할까?"
pp2023.ques = "A: 최규빈 교수 문제 스타일에 대해서 더 분석할 건 없는 것 같고, 내가 내 코드를 잘 구현하는 게 제일 중요한 것 같고 중간고사는 망하긴 했지만 제 스스로 안 무너지면 충분히 기말고사는 잘 볼 수 있을 것 같아요."
pp2023.ans = '마음'
pp2023.highlight =\
pp2023.html_str '''
<style>
.title {{
font-family: "Times New Roman", serif;
font-size: 30px;
font-weight: 900;
}}
.text {{
font-family: "Arial", sans-serif;
font-size: 20px;
font-style: italic;
}}
.highlight {{
font-family: "Montserrat", monospace;
font-size: 35px;
font-weight: 900;
text-decoration: underline;
font-style: normal;
color: darkblue;
background-color: #FFFF00;
}}
</style>
<p class="title">{ttl}</p>
<img src={url} width="600">
<p> \n </p>
<p class="text">{Q}</p>
<p class="text">{A}</p>
<p class="title">중요한 것은 꺾이지 않는 <span class="highlight">{hl}</span></p>
'''
pp2023.show()
파이썬 프로그래밍 중간고사 패배는 괜찮다.
Q: 파이썬 프로그래밍 기말고사, 어떤 점에 유의해야 할까?
A: 최규빈 교수 문제 스타일에 대해서 더 분석할 건 없는 것 같고, 내가 내 코드를 잘 구현하는 게 제일 중요한 것 같고 중간고사는 망하긴 했지만 제 스스로 안 무너지면 충분히 기말고사는 잘 볼 수 있을 것 같아요.
중요한 것은 꺾이지 않는 마음
클래스공부 2단계: __init__
모티브
-
모티브: 태어날때마다 변수들 (pp2023.title, pp2023.ans, …) 을 선언하는게 귀찮다.
트릭1
-
아래의 코드까지는 동일
class JungKKuckMa:
def show(self):
= self.html_str.format(
_str = self.title,
ttl = self.imgurl,
url = self.ques,
Q = self.ans,
A = self.highlight
hl
) display(HTML(_str))
= JungKKuckMa() pp2023
(참고) 이 시점에서 pp2023.
+ tab을 누르면 show 가 자동완성 된다.
-
init을 선언하자.
def init(pp2023):
= '파이썬 프로그래밍 중간고사 패배는 괜찮다.'
pp2023.title = 'https://github.com/guebin/PP2023/blob/main/posts/03_Class/PP2023mid.jpg?raw=true?'
pp2023.imgurl = "Q: 파이썬 프로그래밍 기말고사, 어떤 점에 유의해야 할까?"
pp2023.ques = "A: 최규빈 교수 문제 스타일에 대해서 더 분석할 건 없는 것 같고, 내가 내 코드를 잘 구현하는 게 제일 중요한 것 같고 중간고사는 망하긴 했지만 제 스스로 안 무너지면 충분히 기말고사는 잘 볼 수 있을 것 같아요."
pp2023.ans = '마음'
pp2023.highlight =\
pp2023.html_str '''
<style>
.title {{
font-family: "Times New Roman", serif;
font-size: 30px;
font-weight: 900;
}}
.text {{
font-family: "Arial", sans-serif;
font-size: 20px;
font-style: italic;
}}
.highlight {{
font-family: "Montserrat", monospace;
font-size: 35px;
font-weight: 900;
text-decoration: underline;
font-style: normal;
color: darkblue;
background-color: #FFFF00;
}}
</style>
<p class="title">{ttl}</p>
<img src={url} width="600">
<p> \n </p>
<p class="text">{Q}</p>
<p class="text">{A}</p>
<p class="title">중요한 것은 꺾이지 않는 <span class="highlight">{hl}</span></p>
'''
현재 변수,함수,클래스의 상황은 아래와 같다. (참고로 변수,함수,클래스를 모두 뭉뚱그려서 오브젝트라고 표현할 수도 있음)
- JungKKuckMa
- pp2023
- pp2023.show
- init
-
init을 실행
init(pp2023)
*(참고) 이제 pp2023.
+ tab 을 누르게 되면 아래와 같이 보인다.
현재 오브젝트들의 상황은 아래와 같다.
- JungKKuckMa
- pp2023
- pp2023.show
- pp2023.ans
- pp2023.highlight
- pp2023.html_str
- pp2023.imgurl
- pp2023.ques
- pp2023.title
- init
pp2023.show()
파이썬 프로그래밍 중간고사 패배는 괜찮다.
Q: 파이썬 프로그래밍 기말고사, 어떤 점에 유의해야 할까?
A: 최규빈 교수 문제 스타일에 대해서 더 분석할 건 없는 것 같고, 내가 내 코드를 잘 구현하는 게 제일 중요한 것 같고 중간고사는 망하긴 했지만 제 스스로 안 무너지면 충분히 기말고사는 잘 볼 수 있을 것 같아요.
중요한 것은 꺾이지 않는 마음
트릭2
-
외부에 선언된 init을 클래스 내부로 넣어서 선언. (외부에 선언된 함수를 클래스 내부의 메소드로 선언)
class JungKKuckMa:
def init(self):
self.title = '파이썬 프로그래밍 중간고사 패배는 괜찮다.'
self.imgurl = 'https://github.com/guebin/PP2023/blob/main/posts/03_Class/PP2023mid.jpg?raw=true?'
self.ques = "Q: 파이썬 프로그래밍 기말고사, 어떤 점에 유의해야 할까?"
self.ans = "A: 최규빈 교수 문제 스타일에 대해서 더 분석할 건 없는 것 같고, 내가 내 코드를 잘 구현하는 게 제일 중요한 것 같고 중간고사는 망하긴 했지만 제 스스로 안 무너지면 충분히 기말고사는 잘 볼 수 있을 것 같아요."
self.highlight = '마음'
self.html_str =\
'''
<style>
.title {{
font-family: "Times New Roman", serif;
font-size: 30px;
font-weight: 900;
}}
.text {{
font-family: "Arial", sans-serif;
font-size: 20px;
font-style: italic;
}}
.highlight {{
font-family: "Montserrat", monospace;
font-size: 35px;
font-weight: 900;
text-decoration: underline;
font-style: normal;
color: darkblue;
background-color: #FFFF00;
}}
</style>
<p class="title">{ttl}</p>
<img src={url} width="600">
<p> \n </p>
<p class="text">{Q}</p>
<p class="text">{A}</p>
<p class="title">중요한 것은 꺾이지 않는 <span class="highlight">{hl}</span></p>
'''
def show(self):
= self.html_str.format(
_str = self.title,
ttl = self.imgurl,
url = self.ques,
Q = self.ans,
A = self.highlight
hl
) display(HTML(_str))
-
클래스로 부터 인스턴스 생성
= JungKKuckMa() pp2023
(참고) 이 시점에서 pp2023.
+ tab 을 입력하면 아래와 같이 보인다.
-
init 실행
pp2023.init()
(참고) 이 시점에서 pp2023.
+ tab 을 입력하면 아래와 같이 보인다.
-
show 실행
pp2023.show()
파이썬 프로그래밍 중간고사 패배는 괜찮다.
Q: 파이썬 프로그래밍 기말고사, 어떤 점에 유의해야 할까?
A: 최규빈 교수 문제 스타일에 대해서 더 분석할 건 없는 것 같고, 내가 내 코드를 잘 구현하는 게 제일 중요한 것 같고 중간고사는 망하긴 했지만 제 스스로 안 무너지면 충분히 기말고사는 잘 볼 수 있을 것 같아요.
중요한 것은 꺾이지 않는 마음
트릭2의 사용
t=1 – 밈1: 파이썬 프로그래밍 중간고사
= JungKKuckMa() pp2023
(참고) 이 시점에서 pp2023.
+ tab 을 누르면?
pp2023.init()
(참고) 이 시점에서 pp2023.
+ tab을 누르면?
pp2023.show()
파이썬 프로그래밍 중간고사 패배는 괜찮다.
Q: 파이썬 프로그래밍 기말고사, 어떤 점에 유의해야 할까?
A: 최규빈 교수 문제 스타일에 대해서 더 분석할 건 없는 것 같고, 내가 내 코드를 잘 구현하는 게 제일 중요한 것 같고 중간고사는 망하긴 했지만 제 스스로 안 무너지면 충분히 기말고사는 잘 볼 수 있을 것 같아요.
중요한 것은 꺾이지 않는 마음
t=2 – 밈2: 버거킹
= JungKKuckMa()
burger burger.init()
= '버거 2개를 골라도 6000원!'
burger.title = 'https://github.com/guebin/PP2023/blob/main/posts/03_Class/burgerking.png?raw=true'
burger.imgurl = '기간: 11월28일(월)~12.4(일)'
burger.ques = '콰트로치즈 와퍼 주니어, 통새우 와퍼 주니어, 롱치킨 버거 최대 42% 할인!'
burger.ans = '할인' burger.highlight
burger.show()
버거 2개를 골라도 6000원!
기간: 11월28일(월)~12.4(일)
콰트로치즈 와퍼 주니어, 통새우 와퍼 주니어, 롱치킨 버거 최대 42% 할인!
중요한 것은 꺾이지 않는 할인
t=3 – 밈1변경: 중요한 것은 꺾이지 않는 “집중력”
= '집중력' pp2023.highlight
pp2023.show()
파이썬 프로그래밍 중간고사 패배는 괜찮다.
Q: 파이썬 프로그래밍 기말고사, 어떤 점에 유의해야 할까?
A: 최규빈 교수 문제 스타일에 대해서 더 분석할 건 없는 것 같고, 내가 내 코드를 잘 구현하는 게 제일 중요한 것 같고 중간고사는 망하긴 했지만 제 스스로 안 무너지면 충분히 기말고사는 잘 볼 수 있을 것 같아요.
중요한 것은 꺾이지 않는 집중력
t=4 – 밈2변경: 버거 종류 수정 + 할인뒤에 느낌표 2개 추가
= '기네스콰트로치즈와퍼, 기네스와퍼, 몬스터와퍼, 몬스터X 최대 ??% 할인!'
burger.ans = '할인!!' burger.highlight
burger.show()
버거 2개를 골라도 6000원!
기간: 11월28일(월)~12.4(일)
기네스콰트로치즈와퍼, 기네스와퍼, 몬스터와퍼, 몬스터X 최대 ??% 할인!
중요한 것은 꺾이지 않는 할인!!
__init__()
-
모티브: 생각해보니까 트릭2는 (1) 인스턴스를 만든 뒤 (2) pp2023.init() 를 수행하는 것이 고정임!
세트실행의 예시
= JungKKuckMa()
burger burger.init()
-
하고 싶은 것: 인스턴스를 만드는 시점에서 자동으로 init()
이 실행되도록 하고 싶다.
class JungKKuckMa:
def __init__(self):
self.title = '파이썬 프로그래밍 중간고사 패배는 괜찮다.'
self.imgurl = 'https://github.com/guebin/PP2023/blob/main/posts/03_Class/PP2023mid.jpg?raw=true?'
self.ques = "Q: 파이썬 프로그래밍 기말고사, 어떤 점에 유의해야 할까?"
self.ans = "A: 최규빈 교수 문제 스타일에 대해서 더 분석할 건 없는 것 같고, 내가 내 코드를 잘 구현하는 게 제일 중요한 것 같고 중간고사는 망하긴 했지만 제 스스로 안 무너지면 충분히 기말고사는 잘 볼 수 있을 것 같아요."
self.highlight = '마음'
self.html_str =\
'''
<style>
.title {{
font-family: "Times New Roman", serif;
font-size: 30px;
font-weight: 900;
}}
.text {{
font-family: "Arial", sans-serif;
font-size: 20px;
font-style: italic;
}}
.highlight {{
font-family: "Montserrat", monospace;
font-size: 35px;
font-weight: 900;
text-decoration: underline;
font-style: normal;
color: darkblue;
background-color: #FFFF00;
}}
</style>
<p class="title">{ttl}</p>
<img src={url} width="600">
<p> \n </p>
<p class="text">{Q}</p>
<p class="text">{A}</p>
<p class="title">중요한 것은 꺾이지 않는 <span class="highlight">{hl}</span></p>
'''
def show(self):
= self.html_str.format(
_str = self.title,
ttl = self.imgurl,
url = self.ques,
Q = self.ans,
A = self.highlight
hl
) display(HTML(_str))
-
사용예시
= JungKKuckMa() pp2023
(참고) 이 시점에서 pp2023.
+ tab을 하면? 예상: __init__
과 show
가 보일것이다?
실제로는 위와 같이 보임
- 변수들이 미리 선언되어 있음.
- 함수
__init__
은 안보임 (숨어있음)
(참고) 숨은 __init__
을 강제소환
::: {#ee823856-d0aa-48e2-8a84-c9bc157389f4 .cell execution_count=38}
__init__?? pp2023.
::: {.cell-output .cell-output-display}
::: {.ansi-escaped-output}
```{=html}Signature: pp2023.init() Docstring: Initialize self. See help(type(self)) for accurate signature. Source:
def init(self): self.title = ‘파이썬 프로그래밍 중간고사 패배는 괜찮다.’ self.imgurl = ‘https://github.com/guebin/PP2023/blob/main/posts/03_Class/PP2023mid.jpg?raw=true?’ self.ques = “Q: 파이썬 프로그래밍 기말고사, 어떤 점에 유의해야 할까?” self.ans = “A: 최규빈 교수 문제 스타일에 대해서 더 분석할 건 없는 것 같고, 내가 내 코드를 잘 구현하는 게 제일 중요한 것 같고 중간고사는 망하긴 했지만 제 스스로 안 무너지면 충분히 기말고사는 잘 볼 수 있을 것 같아요.” self.highlight = ‘마음’ self.html_str =
’’’ <style> .title