Chapter 6. 함수 기초 (2)
어제 너무 아파서 공부를 못했다.. 하지만 진짜 5일째 되는 날 @_@
무슨 일이 있었냐는 듯 약간의 두통만 남긴채 말짱해졌댜
이번 주말에는 밀린 과제도 하고 했던 프로젝트 올리규 쉬어야지 매일매일 인공지능,데이터 공부하는거 습관 들여야한다 !
화이띵화이띵 ~~~ >-<
6.3 클래스
6.3.1 객체
- 객체 : 변수(멤버)와 함수(메서드)가 뭉쳐서 정리된 물건
##클래스의 예
mylist = [1,10,2,20]
mylist.sort()
print(mylist)
##함수로 전달하여 처리 결과를 표시할 수 있다.
클래스 설계 시 정의 3요소 :
생성자, 메서드, 멤버
- (1) 생성자 (constructor) :
클래스를 만들 때 자동으로 호출되는 특수 함수
파이썬에서는 이름을 _init__
첫번째 인수로 객체 자신을 의미하는 self라는 특수 변수를 가짐 - (2) 메서드(method) :
클래스가 갖는 처리(함수)
인스턴스를 조작하는 인스턴스 메서드, 클래스 전체를 처리하는 클래스 메서드, 인스턴스 없이도 실행할 수 있는 정적 메서드 존재 (인스턴스 메서드, 클래스 메서드, 정적 메서드) - (3) 멤버(member) :
클래스가 가지는 값(변수), 다른 객체 지향 언어는 퍼블릭과 프라이빗으로 이루어져 있는 반면, 파이썬은 모두 퍼블릭 멤버로 처리, 접근 제한은 프로퍼티(property)로 제한
6.3.2 클래스(멤버와 생성자)
- 객체의 구조를 설계하는 설계도, 클래스
ex)
객체의 내용 :
--상품
멤버 :
--상품명ㅣname
--가격 | price
--재고 | stock
--매출 | sales
##클래스의 예(1)
#MyProduct 클래스 정의
class MyProduct:
##생성자 정의
def __init__(self,name,price) :
#인수를 멤버에 저장
self.name = name
self.price = stock
self.stock = 0
self.sales = 0
클래스를 호출해야한다.
#MyProduct를 호출하여 객체 product1을 만듦
product1 = MyProduct("cake",500)
##name = "cake", price = 500으로 생성자 작동,
각 인수에 의해 멤버 name과 price초기화
##MyProduct 클래스의 생성자를 수정하여 클래스 호출시
name,price, stock의 초깃값을 설정해라. 아래의 인수명은 다음과 같다. (상품명 : name ,가격 : price, 재고 : stock)#클래스를 정의한다. class MyProduct : #생성자를 수정한다. def __init__(self,name,price,stock) : #인수를 멤버에 저장한다. self.name = name self.price = price self.stock = stock self.sales = 0 #MyPrduct를 호출하여 객체 product_1을 만든다. product_1 = MyProduct("cake",500,20) #product_1의 stock을 출력하세요 print(product_1.stock)
6.3.3 메서드
- 메서드
--상품을 n개 구매하고, 재고를 갱신 : buy_up(n)
--상품을 n개 판매하고, 재고와 매출을 갱신 : sell(n)
--상품의 개요를 출력 : summary()
위의 클래스에 다음과 같은 3가지의 메서드 추가
class MyProudct:
def __init__(self,name, price, stock) :
self.name = name
self.price = price
self.stock = stock
self.sales = 0
#구매 메서드 추가
def buy_up(self,n) :
self.stock +=n
#판매 메서드 추가
def sell(self,n) :
self.stock-=n
self.sales +=n*self.price
#개요 메서드 추가
def summary(self):
message = "called summar().\n name : " + \self.name + "\n price: " + str(self.price) + \"\n stock : " + str(self.stock) + \"\n sales ": + str(self.sales)
print(message)
MyProduct 클래스에 다음 메서드 추가
--name의 값을 취득해서 반환
-- price를 n만큼 낮춤
-- product_2의 price를 5000만큼 낮추고 summary() 메서드로 요약 정보 출력
class MyProduct :
def __init__(self, name, price, stock) :
self.name = name
self.price = price
self.stock = stock
self.sales = 0
def buy_up(self, n) :
self.stock +=n
def sell(self,n) :
self.stock-=n
self.sales +=n+self.price
#개요메서드 생략
def get_name() :
return self.name
def discount(self,n) :
self.price -=n
product_2 = MyProduct("phone",30000,100)
product_2.discount(5000)
#product2의 summary출력
product_2.summary()
6.3.4 클래스(상속, 오버라이드, 슈퍼)
- 다른 사람이 만든 클래스에 기능을 추가하고 싶을 때, 상속
- 상속 : 기존의 클래스를 바탕으로 메서드나 멤버를 추가하거나 일부만 변경하여 새로운 클래스를 만듦
- 바탕 : 부모클래스, 슈퍼클래스, 기저클래스
- 새로 만든 클래스 : 자식클래스, 서브클래스, 파생 클래스
- 자식클래스:
-- 부모 클래스의 메서드와 멤버를 그대로 사용
--부모 클래스의 메서드와 멤버를 덮어쓴다.(오버라이드)
--자기자신의 메서드와 멤버를 자유롭게 추가
--자식 클래스에서 부모 클래스의 메서드와 멤버를 호출(수퍼)MyProduc를 상속하여 10% 소비세를 적용한 MyProductSalesTax 만들기
##클래스 상속의 예
#MyProduct 클래스를 상속하는 MyProductSalesTax 정의
class MyProductSalesTax (MyProduct) :
#MyProductSalesTax는 생성자의 네 번째 인수가 소비세율을 받는다.
def__init__(self,name,price,stock,tax_rate) :
#super를 사용하면 부모클래스의 메서드를 호출 가능
super().__init__(name,price,stock)
self.tax_rate = tax_rate
#MyProductSalesTax에서 MyProduct의 get_name을
재정의(오버라이드_떺어쓰기)
def get_name(self) :
return self.name + "(소비세포함)"
#MyProductSalesTax에서 get_price_with_tax를 새로 구현
def get_price_with_tax(self) :
return int(self.price *(1 + self.tax_rate))
##MyProduct의 summary() 메서드를 재정의(오버라이드)하여 summary가 소비세를 포함한 가격을 출력하도록 만들어라.
class MyProduct :
def__init__(self,name,price,stock) :
self.name = name
self.price = price
self.stock = stock
self.sales = 0
def summary(self):
message = "called summar().\n name : " + \self.name + "\n price: " + str(self.price) + \"\n stock : " + str(self.stock) + \"\n sales ": + str(self.sales)
print(message)
def get_name(self) :
return self.name
def discount(self,n) :
self.price-=n
class MyProductSalesTax(MyProduct) :
#MyProduct의 네번째인수가 소비세율을 받음
def__init(self,name,price,stock,tax_rate):
super().__init__(name,price,stock)
self.tax_rate = tax_rate
#MyProductSalesTax에서 MyProduct의 get_name을 오버라이드
def get_name(self) :
return self.name + "(소비세포함)"
#MyProductSalesTax에 get_price_with_tax를 새로 구현
def get_price_with_tax(self) :
return int(self.price*(1+self.tax_rate))
#MyProductSalesTax에 summary메서드 제정의하고 summary
가 소비세를 포함한 가격을 출력하도록 만들어라.
def summary(self):
message = "called summar().\n name : " + \self.name + "\n price: " + str(self.get_price_with_tax()+0) + \"\n stock : " + str(self.stock) + \"\n sales ": + str(self.sales)
print(message)
6.4 문자열 포맷 지정
- %d : 정수로 표시
- %f : 소수로 표시
- %.2f : 소수점 이하 두 자리까지 표시
- %s : 문자열로 표시
Author And Source
이 문제에 관하여(Chapter 6. 함수 기초 (2)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@thditkfkd/Chapter-6.-함수-기초-2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)