파이썬 (0509) 10주차

클래스
Author

김보람

Published

May 9, 2022

# jupyter notebook을 통한 ppt발표(슬라이드)가 가능. 관련 프로그램을 깔아야한다.

밈(Meme)과 클래스

신혜선의 어쩔티비

- 밈이란? 유전자처럼 복제가능한 something

클래스

- 클래스에 대한 비유적 설명 (implicit definition)

  • 클래스는 과자틀과 비슷하다. 클래스란 똑같은 무엇인가를 계속 만들어 낼 수도 있는 설계도면이고 객체란 클래스로 만든 피조물을 뜻한다. (점프투파이썬)

  • In object-oriented programming, a class is an extensible program-code-template for creating objects, providing initial values for state (member variables) and implementations of behavior (member functions or methods). // 객체 지향 프로그래밍에서 클래스는 상태(멤버 변수) 및 동작 구현(멤버 함수 또는 메서드)에 대한 초기 값을 제공하는 객체 생성을 위한 확장 가능한 프로그램 코드 템플릿입니다.

  • http://www.tcpschool.com/java/java_class_intro

  • https://javacpro.tistory.com/29

  • https://ko.wikipedia.org/wiki/%ED%81%B4%EB%9E%98%EC%8A%A4_(%EC%BB%B4%ED%93%A8%ED%84%B0_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D)

- 클래스에 대한 명시적 정의 (교수님 생각)

  • 클래스는 복제, 변형, 재생산을 용이하게 하기 위해 만들어진 확장가능한 프로그램의 코드의 단위(extensible program-code-template)이다. 즉 밈이다.

- 클래스도 결국 밈이다. 생각해보면 클래스를 만들고 사용하는 과정이 인터넷에서 밈을 만들고 노는것과 닮아 있다.

  • 1단계: 개념의 인지 (이거 재미있겠다 밈으로 만들자 // 이 코드 쓸모있다, 이 코드를 쉽게 찍어내는 클래스로 만들어두자)

  • 2단계: 복사하고 싶은 속성을 추려 복사가능한 틀을 만듬 (밈 초기 컨텐츠 // 클래스의 선언)

  • 3단계: 밈에서 다양한 컨텐츠를 재생산, 때로는 변형하여 재생산, 때로는 그것을 응용한 다른밈을 만듬 (밈화 // 클래스의 인스턴스화, 상속, 메소드오버라이딩)

“멈춰” 밈을 컨텐츠화

- 멈춰 밈을 이용하여 코스피하락, 수강신청 매크로 등 다양한 예제를 만들자

from IPython.core.display import HTML

예비학습

문자열포맷팅 (문자열끼워넣기)

- 예제1

'제 이름은 {}입니다.'.format('보람')
'제 이름은 보람입니다.'

-예제2

'제 이름은 {}이고 사는 곳은 {}입니다.'.format('보람','전주')
'제 이름은 보람이고 사는 곳은 전주입니다.'
'제 이름은 {}이고 사는 곳은 {}입니다.'.format('전주','보람')
'제 이름은 전주이고 사는 곳은 보람입니다.'

-예제3

'제 이름은 {name}이고 사는 곳은 {add}입니다.'.format(name='보람',add='전주')
'제 이름은 보람이고 사는 곳은 전주입니다.'
'제 이름은 {name}이고 사는 곳은 {add}입니다.'.format(add='전주',name='보람')
'제 이름은 보람이고 사는 곳은 전주입니다.'

HTML

-예제1

HTML("<p> 이름 </p>")

이름

-예제2

HTML("<img src='https://stat.jbnu.ac.kr/sites/stat/atchmnfl_mngr/imageSlide/469/temp_1573001043314100.jpg'>")

- 예제3

HTML("<p> 전북대학교 </p><img src='https://stat.jbnu.ac.kr/sites/stat/atchmnfl_mngr/imageSlide/469/temp_1573001043314100.jpg'>")

전북대학교

HTML을 이용한 밈생성

- 밈을 위한 이미지 주소

url1='https://github.com/guebin/IP2022/blob/master/_notebooks/2022-05-07-stop1.jpeg?raw=true'
url2='https://github.com/guebin/IP2022/blob/master/_notebooks/2022-05-07-stop2.png?raw=true'

- 예제1: 원본

htmlstr.format(title='학교폭력',url=url1,end='멈춰~~~~')
"<p> 학교폭력 </p> <img src='https://github.com/guebin/IP2022/blob/master/_notebooks/2022-05-07-stop1.jpeg?raw=true'> <p> 멈춰~~~~ </p>"
htmlstr = "<p> {title} </p> <img src='{url}'> <p> {end} </p>"
HTML(htmlstr.format(title='학교폭력',url=url1,end='멈춰~~~~'))

학교폭력

멈춰~~~~

- 예제2: 코스피하락 멈춰어

HTML(htmlstr.format(title='코스피하락',url=url1,end='멈춰~~~~'))

코스피하락

멈춰~~~~

- 예제3: 매크로 멈춰어

HTML(htmlstr.format(title='수강신청매크로',url=url1,end='멈춰~~~~'))

수강신청매크로

멈춰~~~~

함수를 만들어서 코드를 관리

- 함수의 선언

def stop():
    htmlstr = "<p> {title} </p> <img src='{url}'> <p> {end} </p>"
    display(HTML(htmlstr.format(title=ttl,url=url,end=end)))   #display로 받아주는게 좋다
    

- 사용

ttl = '돈쓰는거'
url = url1
end = '멈춰 ㅠ'
stop()

돈쓰는거

멈춰 ㅠ

ttl = '술담배'
url = url1
end = '멈춰!'
stop()

술담배

멈춰!

ttl = '코코 주워먹는거'
url = url2
end = '멈춰!!!!!'
stop()

코코 주워먹는거

멈춰!!!!!

클래스를 만들어서 관리

class STOOOP: #STOOOP은 양식문서의 이름이라 생각하자.
    title = "학교폭력"
    url = url1
    end = "멈춰~~~~"
    def stop(self):  # 규칙1: class안에서 정의된 함수는 첫번째 입력으로 무조건 self를 받는다.
        htmlstr = "<p> {title} </p> <img src='{url}'> <p> {end} </p>"
        display(HTML(htmlstr.format(title=self.title,url=self.url,end=self.end))) 
        # 규칙2: class안에서 정의된 변수 (title, url, end)를 쓰려면 "self.변수이름"의 형태로 써야함

t=1 학교폭력멈춰

school = STOOOP()   

# STOOOP이라는 이름의 양식문서를 복사해 하나의 hwp 파일을 만들어 밈을 생성하고 그 파일이름을 school이라고 하자.
# 그러니가 STOOP.hwp 와 school.hwp가 잇다..
school.title
'학교폭력'
school.url
'https://github.com/guebin/IP2022/blob/master/_notebooks/2022-05-07-stop1.jpeg?raw=true'
school.end
'멈춰~~~~'
school.stop()

학교폭력

멈춰~~~~

t=2 코스피하락멈춰

kospi = STOOOP() # 코스피하락 멈춰를 위해 STOOP.hwp양식문서에서 하나의 밈을 찍어낸다. (kospi.hwp)
kospi.title = '코스피하락' #제목변경
kospi.stop()

코스피하락

멈춰~~~~

t=3 수강신청매크로 멈춰

macro = STOOOP()
macro.title, macro.url, macro.end
('학교폭력',
 'https://github.com/guebin/IP2022/blob/master/_notebooks/2022-05-07-stop1.jpeg?raw=true',
 '멈춰~~~~')
macro.title = "수강신청매크로"
macro.stop()

수강신청매크로

멈춰~~~~

t=4 수강신청 매크로 멈춰 끝 물결대신 느낌표

macro.end = "멈춰!!!!!!!!"
macro.title, macro.url, macro.end
('수강신청매크로',
 'https://github.com/guebin/IP2022/blob/master/_notebooks/2022-05-07-stop1.jpeg?raw=true',
 '멈춰!!!!!!!!')
macro.stop()

수강신청매크로

멈춰!!!!!!!!

t=5 코스피하락 다시 출력 (함수와 비교했을때 실수 발생x)

kospi.stop()

코스피하락

멈춰~~~~

t=6 학교폭력 멈춰와 코스피하락 멈춰 동시에 출력

school.stop()

학교폭력

멈춰~~~~

kospi.stop()

코스피하락

멈춰~~~~

t=7 “학교폭력 멈춰”의 이미지를 신혜선으로 변경, “코스피하락 멈춰”의 title을 ’KOSPI하락’으로 변경

school.url = url2
kospi.title = "KOSPI하락"
school.stop()

학교폭력

멈춰~~~~

kospi.stop()

KOSPI하락

멈춰~~~~

숙제

“수강신청 멈춰”의 이미지를 신혜선으로 변경하고 출력해볼 것

macro.url 변경 macro.stop() 을 사용

macro.url=url2
macro.stop()

수강신청매크로

멈춰!!!!!!!!