from datetime import date, timedelta
from copy import copy

class YearWeek(object):

	def get_origin(self):
		"""Return calendar origin"""
		jan1 = date.today().replace(month=1, day=1)
		return jan1 - timedelta(days=jan1.weekday()+1)

	def __init__(self, yearweek, weekday):
		self.myday = self.get_origin() + timedelta(weeks=yearweek-1, days=weekday)
	
	def __str__(self):
		return self.myday.strftime("%d/%m/%Y")
	
	def _copy(self, newdate=None):
		res = copy(self)
		if date is not None:
			res.myday = newdate
		return res

	# delegate pattern
	def __getattr__(self,name): return getattr(self.myday, name)
	def __add__(self, x): return self._copy(self.myday + x)
	def __sub__(self, x): return (self._copy(self.myday - x)
									if isinstance(x, timedelta)
									else self.myday - x )
					
semana = 47
dia_semana = 2
myday = YearWeek(semana, dia_semana)

print myday
print myday - timedelta(days=2)
print myday
print myday.day
print myday - date.today()
