Méthodologie de la Programmation
Notes de cours - Séance V
Setters et getters
class Animal(object):
def __init__(self, name, age) :
self.name = name
self.age = age
def get_name(self):
return self.name
def get_age(self):
return self.age
def set_age(self, new_age):
self.age = new_age
def set_name(self, new_name):
self.name = new_name
Getters et setters avec avec les décorateurs
class Animal(object):
def __init__(self, name, age):
self.__name = name
self.__age = age
def __str__(self):
return "animal: " + str(self.__name) + ":" + str(self.__age)
@property
def name(self):
return self.__name
@property
def age(self):
return self.__age
@property
def nimp(self):
return self.__age * 10
@name.setter
def name(self, name):
self.__name = name
@age.setter
def age(self, age):
self.__age = age
animal = Animal("foo", 42)
animal.name = "bar"
print(animal.nimp)
print(animal.name)
Héritage
class Humain(Animal):
def __init__(self, name, age):
Animal.__init__(self, name, age)
self._amis = []
@property
def amis(self):
return self._amis
@amis.setter
def amis(self, ami):
if ami not in self._amis:
self._amis.append(ami)
def difference_age(self, other):
diff = abs(self.age - other.age)
print(diff, " années de différence")
def speak(self):
print("hello word !")
a = Humain("test", 42)
a.speak()
a.amis = "foo"
print(a.amis)
print(a.age)
a.age = 12
print(a.age)
super()
class Humain(Animal):
def __init__(self, name, age):
super().__init__(name, age)
self._amis = []
Héritage multiple
class GroundVehicle(object):
def drive(self):
print("Drive !")
class FlyingVehicle(object):
def fly(self):
print("Fly !")
class FlyingCar(GroundVehicle, FlyingVehicle):
pass
fc = FlyingCar()
fc.drive()
fc.fly()