from
datetime
import
date
from
dateutil.relativedelta
import
relativedelta
class
Product:
name
=
""
def
__init__(
self
):
print
(
"super class Product"
)
def
getExpDate():
print
(
"Expiry date"
)
pass
class
Snack(Product):
shelfLife
=
6
price
=
0
def
__init__(
self
, name, price):
self
.name
=
name
self
.price
=
price
def
printDetails(
self
):
print
(
"name : "
+
self
.name)
print
(
"price : "
+
str
(
self
.price))
print
(
"shelf life : "
+
str
(
self
.shelfLife)
+
" months"
)
def
getExpDate(
self
, pkdDate):
expDate
=
pkdDate
+
relativedelta(months
=
self
.shelfLife)
return
expDate
class
Beverage(Product):
shelfLife
=
2
price
=
0
def
__init__(
self
, name, price):
self
.name
=
name
self
.price
=
price
def
printDetails(
self
):
print
(
"name : "
+
self
.name)
print
(
"price : "
+
str
(
self
.price))
print
(
"shelf life : "
+
str
(
self
.shelfLife)
+
" years"
)
def
getExpDate(
self
, pkdDate):
expDate
=
pkdDate
+
relativedelta(years
=
self
.shelfLife)
return
expDate
class
Staples(Product):
shelfLife
=
1
price
=
0
def
__init__(
self
, name, price):
self
.name
=
name
self
.price
=
price
def
printDetails(
self
):
print
(
"name : "
+
self
.name)
print
(
"price : "
+
str
(
self
.price))
print
(
"shelf life : "
+
str
(
self
.shelfLife)
+
" year"
)
def
getExpDate(
self
, pkdDate):
expDate
=
pkdDate
+
relativedelta(years
=
self
.shelfLife)
return
expDate
def
main():
s
=
Snack(
'cookies'
,
60
)
s.printDetails()
print
(s.name
+
" will expire on "
+
str
(s.getExpDate(date(
2019
,
10
,
3
)))
+
"months"
)
p
=
Product()
st
=
Staples(
'rice'
,
300
)
st.printDetails()
print
(st.name
+
" will expire on "
+
str
(st.getExpDate(date(
2020
,
1
,
23
))))
b
=
Beverage(
'coffee'
,
250
)
b.printDetails()
print
(b.name
+
" will expire on "
+
str
(b.getExpDate(date(
2018
,
12
,
17
))))
print
(
"done till here"
)
if
__name__
=
=
'__main__'
:
main()