from take_time import timeit class Rectangle(object): def __init__(self, s0, s1): self.s0 = s0 self.s1 = s1 @timeit def perimeter(self): return 2 * (self.s0 + self.s1) def area(self): pass square = Rectangle(5, 5) square.perimeter() class Person(object): def __init__(self, name, surname): self.name = name.capitalize() self.surname = surname.capitalize() class Contact(Person): def __init__(self, address=None, mobile=None, phone=None, *args, **kargs): # super is a function that call the method of the parent object super(Contact, self).__init__(*args, **kargs) self.address = address self.mobile = mobile self.phone = phone pietro = Person('pietro', 'zambelli') pietro.name zambelli = Contact(name='pietro', surname='zambelli', address='via Mesiano 77', phone='0461282696') zambelli.phone zambelli.name zambelli print zambelli class NiceContact(Contact): def __init__(self): pass def __str__(self): pass def __repr__(self): pass pietro = NiceContact(name='pietro', surname='zambelli', address='via Mesiano 77', phone='0461282696') print repr(pietro) # use __repr__ print pietro # use __str__ one = 1 two = 2. one.__add__(2) two.__sub__(one) 'a'.__add__('b') == 'a' + 'b' phone='0461282696' phone.isdigit() class Contact(Person): def _get_phone(self): return self._phone def _set_phone(self, phone): if phone.isdigit(): if len(phone)>8: self._phone = phone else: raise TypeError("Phone number must be longer than 8 characters") else: raise TypeError("Phone number must contain only numbers") phone = property(fget=_get_phone, fset=_set_phone) @property def complete_name(self): return "%s %s" % (self.name, self.surname) def __init__(self, address=None, mobile=None, phone=None, *args, **kargs): # super is a function that call the method of the parent object super(Contact, self).__init__(*args, **kargs) self.address = address self.mobile = mobile self.phone = phone pietro = Contact(name='pietro', surname='zambelli', address='via Mesiano 77', phone='0461282696') pietro.phone pietro.phone = '045.' pietro.complete_name phone = '+39 046-128.26/96' # cleaned: '390461282696'