요즘애들은 고등학교에서도 파이썬을 배우고 심하면 C언어도 배운다고 하던데
내가 고등학교때에는 그런거 없었거든요?
그러면 좀 상대적 박탈감이 들기도 하구 뭐 별 수 있나
시대가 빠르게 변화하고있는데 그 시대에 걸맞게 어린아이들을 올바르게 교육시켜서 사회로 내보내는게 학교의 역할인데
내가 학교다니던 2012~2015년의 시기에는 코딩 배우는게 올바르지는 않았나? 봐요
무튼 사담은 뒤로 하고 오늘 하루종일 학교에서 배운거(연습) 공유함
작은 성취감이 느껴지는 것을 뒤로 하고
파이썬입니다!
현직자 친구들이 보면
"이 새끼 존나 기본적인거 하면서 블로그에 글 쓰네 ㅉㅉ" 이렇게 말 하지 않을까요?
잘은 몰루?
Visual Studio에서 복사 붙여넣기한 것입니다. 나만 보고싶은데
개발자는 세상 심라 만상 모든것이
나의 것이 아님임을 깨닫고 자기가 만든 코드를 남들한테
공유하는 마음 가짐이 젤 중요하데요.
#Scenario - Library requires a new system
#First step : identifying the classes
class Library: #큰 개념 - 전체적인 큰 블럭을 말합니다
def __init__(self):
self.books=[] #Attributes
self.patrons=[]
def add_book(self, book):
self.book.append(book)
#self는 자기자신을 부르는애에요, 자기 자신을 말하는 딕셔너리 라고도 생각하면 됩니다
#작은개념(Constructor:생성자) // 아니 번역 개떡같이 해놨는데 뭐 생선자라니까 생선자라구 할게요
class Patron: #Patron 은 후원자를 말하기도 하지만, 주요 상점/식당의 고객들을 지칭하는 "공식어휘"
def __init__(self): #내부 애들을 지어볼까요
self.borrowed_books = [] #List to storae borrowed books
self.idname = []
self.name =[]
self.book=[]
#얘내들은 아직까지 할 줄 아는게 없습니다. 비유를 하자면 내 손에 "핸드폰"이 들려있다고 해서
#그 핸드폰이 스스로 무언가를 하는것은 아닙니다, 그러니 유저들이 "상호작용"을 해줘야하잖아요?
#그러니 함수를 설정해 어떻게 사용할지 넣어줍시다, 함수는 가능한 시나리오중 하나를 묘사하는 거라구 생각하면 편합니다
#그러니까, 앞서 비유한 핸드폰을 갖고 "친구한테 전화하기" 라는 함수를 만드는거에요.
#핸드폰 번호도 넣어주고 해야겠죠? 친구한테 전화할려면 친구 전화번호를 넣어야지 아무 번호만 넣으면 안되잖아요
def __str__(self):
return(f"{self.borrowed_books}, Your ID Num {self.idname} and {self.name}")
#__str__ 함수는 신기한 녀석입니다, 이 함수로 오브젝트를 String 으로 표현할수이써요, 생각해보니까 이놈 이름도 String 이라는걸 함수로 표현한 친구네요. 참 착한 친구에요
#객체 내부에서 넘어오는 값을 String으로 출력할때 이 착한 친구는 필수적이에요
# 만약에, 이 녀석이 없이 함수를 출력한다면, 해당 객체의 "메모리 주소"를 출력합니다
# 그러니까 메모리를 집이라고 생각한다면, 그 집의 주소를 말하는거에요
# 친구의 이름을 불러야하는데, 친구집 주소만 알고있다면 "00시 00구 00로 00아파트 00호수 사는 놈" 이라고 부르는 거잖아요? 그럼 좀 이상하잖아요?
# 그럴때 __Str__ 친구를 불러서 이름을 알려주는 겁니다, 컴퓨터는 똑똑한 친구지만 하나하나 알려줘야하는 귀찮음이 있어요.
#이제 책을 빌려봅시다
#책빌리기 함수!
def borrow_book(self,book):
if book.is_borrowed:
print(f"sorry, {book.name} is out on loan")
else:
book.is_borrowed = True #책이 빌려진게 맞다면
self.borrowed_books.append(book) #빌린책들의 리스트에 추가해봅시다
#참고로 파이썬에서 . 점은 다른 Method 에서 개념을 가져온겁니다
#헉 이거 모르면 님아 개념 놓친거임 이거 할때가 아님 개념 ㄱㄱ
def return_book(self,book):
for borrowed_book in self.borrowed_books:
if borrowed.book.name == book.name: #빌린 책의 이름이
print.is_borrowed = False
self.borrowed_books.remove(book)
def view_borrowed_book(self,book):
borrowed_books_list = []
for book in self.borrowed_book: #for 반복 함수로 리스트를 만드는 행위입니다.
print.borrowed_books_list.append(str{book}) #여기서 str은 오는 값을 string으로 출력하라는 소리입니다
#예시를 들어볼께요, 친구, 친구의 이름을 기억하기 쉽게 아저씨 같은 이름을 넣어봅시다
#김덕배(48세, 무직 배수)라는 친구를 뒀다고 생각해요
#그 친구의 나이는 우리가 48이라는걸 알아요
#근데 컴퓨터는 어린아이 같아서, 그 숫자가 왜 주어진지 말을 해줘야하거드요.
#안그러면 잉?? 48??? 뭐지 마법의 숫자인가? 하면서 아무것도 안해요 컴퓨터는 참 인생 편하게 삽니다
#그때 개발자 친구들이 말해줍니다 "예야, 48이라는 숫자는 스트링이야"
#그럼 컴퓨터가 그 숫자를 기억하고 48은 스트링이구나! 라고 기억을 할거에요
#이런 같은 개념으로 int, str, float, chr 같은 것으로 할당이 가능합니다. 콤퓨타는 인생 편하게 살아서 좋겠죠?
def __str__(self) -> str:
return(f"{self.name}, is a {self.name}")
class Book: #작은 개념 2 (Constructor)
def __init__(self, name, genre, year, is_borrowed):
self.name = name
self.genre = genre
self.year = year
self.is_borrowed = False
def __str__(self):
return(f"Title:{self.name}, Genre:{self.genre},Publish year{self.year}. is borrowed")
#만들어진 애들을 테스트 해봅시다. 내가 만든 코드니까 내가 좋아하는걸 넣을꺼에요
book1 = Book("Steins;Gate", "Sci-fi","2008", "is borrowed")
print(book1)
view_borrowed_book()
#항상 콤마가 적절히 사용되었는지 확인해봅시다... 아까도 이거땜에 오류 겁나 났엇음
#오늘 배운 중요개념
클래스가 가진 함수를 method 라고 부른다
클래스 내부에 함수를 정하고 싶으면, self를 넣어줘야한다. <---- 이건 자바나 C언어는 다른거 넣음.
클래스는 하나의 도구를 내 스스로 만드는 과정이고, 그 도구를 만들어 내가 원하는 것을 조각한다
'컴퓨터 공학 > Python' 카테고리의 다른 글
역시 코딩 초보자는 못말려 (0) | 2023.11.15 |
---|---|
Python 기본으로 내가 좋아하는거 갖구 노는중 (0) | 2023.11.14 |
Python Dictionary 와 Set 사용 (0) | 2023.11.14 |
두번째 파이썬 수업 2023/11/09 (0) | 2023.11.09 |
응애 응애 나 파이썬 애기 (0) | 2023.07.03 |