Increment attributes of two class without modules?
<p>How to make a class which could operate like this without importing other modules?</p>

<pre><code>&gt;&gt;date(2014,2,2) + delta(month=3)
&gt;&gt;(2014, 5, 2)
&gt;&gt;
&gt;&gt;date(2014, 2, 2) + delta(day=3)
&gt;&gt;(2014, 2, 5)
&gt;&gt;date(2014, 2, 2) + delta(year=1, month=2)
&gt;&gt;(2015, 4, 2)
</code></pre>

<p>This is my code:</p>

<pre><code># class delta(date):
#     year = date(year)
#     def __init__(self,y,m,d):
#         self.y = y + year
#         self.m = m
#         self.d = d
#     def __call__(self):
#         return self.y, self.m, self.d
class date(object):
    def __init__(self,year,month,day):
        self.year = year
        self.month = month
        self.day = day
    def __call__(self):
        return self.year, self.month, self.day
</code></pre>

<p>Override the <code>__add__</code> method. In the delta class give the <code>__init__</code> default parameters so you can call it with only one or two arguments.</p>

<pre><code>class delta():
    def __init__(self,year=0,month=0,day=0):
        self.y = year
        self.m = month
        self.d = day
    def __call__(self):
        return self.y, self.m, self.d

class date():
    def __init__(self,year,month,day):
        self.year = year
        self.month = month
        self.day = day   
    def __call__(self):
        return self.year, self.month, self.day
    def isLeapYear (self):
        if ((self.year % 4 == 0) and (self.year % 100 != 0)) or (self.year % 400 == 0):
            return True
        return False
    def __add__(self,delta):
        self.year=self.year+delta.y
        self.month=self.month+delta.m
        if self.month&gt;12:
            self.month=self.month%12
            self.year+=1
        self.day=self.day+delta.d
        if self.isLeapYear() and self.day&gt;29:
            self.day=self.day%29
            self.month+=1
        elif not self.isLeapYear() and self.day&gt;28:
            self.day=self.day%28
            self.month+=1
        return self.year, self.month, self.day

print(date(2014, 2, 2) + delta(year=1, month=2)) # (2015, 4, 2)

birthdate=date(1990,1,1)
currentyear=birthdate+delta(year=20,month=2,day=5)
print(currentyear) # (2010, 3, 6)
</code></pre>

python class attributes