1 __init__(self, name) : Greeter 인스턴스에 저장할 name이라는 인자를 받음.
이 이름은 인사말 메시지를 출력할 때 사용.
2 _day(self) : 현재 요일(예, SUNDAY)을 반환
3 _part_of_day(self) : 현재 시각이 오후 12시 이전이면 'morning'을 반환, 현재 시각이 오후 12시부터 오후 17시 전이면 'afternoon' 이후면 'evening'을 반환
4 greet(self, store) : 상점 이름이 store에 주어지면 앞의 두 가지 메서드 결과와 합께 다음과 같은 형태의 메시지를 출력
예.
Hi, my name is <name>, and welcome to <store>!
How's your <day> <part of day> going?
Here's a coupon for 20% off!
Greeter클래스가 노출해야 할 것은 greet method뿐이므로 밑줄이 앞에 붙은 메서드는 지역 메서드로 간주 할 수 있음.
이는 Greeter Class의 내부를 캡슐화하므로 외부에서의 관심사는 오직 인사말 뿐이다.
# greeting module at online shopping website
from datetime import datetime
class Greeter:
def __init__(self, name:str) -> None:
self.name = name
def _day(self):
return datetime.now().strftime("%A")
def _part_of_day(self):
current_hour = datetime.now().hour
if current_hour < 12:
part_of_day = "morning"
elif 12<= current_hour < 17:
part_of_day = 'afternoon'
else:
part_of_day = 'evening'
return part_of_day
def greet(self, store):
data = f"""
Hi, my name is {self.name}, and welcome to {store}!
How's your {self._day()} {self._part_of_day()} going?
Here's a coupon for 20% off!
"""
print(data)
g = Greeter('hyeseong')
g.greet('ABC')
Hi, my name is hyeseong, and welcome to ABC!
How's your Monday afternoon going?
Here's a coupon for 20% off!
def day():
return datetime.now().strftime("%A")
def part_of_day():
current_hour = datetime.now().hour
if current_hour < 12:
part_of_day = "morning"
elif 12<= current_hour < 17:
part_of_day = 'afternoon'
else:
part_of_day = 'evening'
return part_of_day
from datetime import datetime
class Greeter:
def __init__(self, name:str) -> None:
self.name = name
def greet(self, store):
data = f"""
Hi, my name is {self.name}, and welcome to {store}!
How's your {day()} {part_of_day()} going?
Here's a coupon for 20% off!
"""
print(data)
g = Greeter('hyeseong')
g.greet('ABC')
Hi, my name is hyeseong, and welcome to ABC!
How's your Monday afternoon going?
Here's a coupon for 20% off!
functools.partial
:
from functools import partial
def pow(x, power=1):
return x ** power
square = partial(pow, power=2)
cube = partial(pow, power=3)
print(square(2), cube(2))
믹스인
말하기
, 구르기
기능을 할 수 있는 다른 동물을 만들려고 할 때 유용class SpeakingMixin:
def speak(self):
name = self.__class__.__name__.lower()
print(f"The {name} says, Hello world")
class RolloverMixin:
def roll_over(self):
print('rolling~ rolling~')
class Dog(SpeakingMixin, RolloverMixin):
pass
d = Dog()
d.speak()
d.roll_over()
The dog says, Hello world
rolling~ rolling~