Programmation orientée objet intermédiaire en Python
Jake Roach
Data Engineer
class Student:
def __init__(self, name, student_id, tuition_balance):
self.name = name
self.student_id = student_id
self.tuition_balance = tuition_balance
# Créer une classe peut être piégeux
walker = Student("Sarah Walker", 319921, 15000)
student_id doit-il être un entier ?tuition_balance doit-il être un float ou un entier ? Peut-être une chaîne ?walker, comment se souvenir de son type plus loin dans le code ?Outil optionnel pour ajouter des infos de type dans le code
typing, classes personnalisées# Ajouter une annotation lors de la création
# d'une variable
gpa: float = 3.92
# Ajouter des annotations à une définition
# de fonction/méthode
def check_grades(year: str) -> List[int]:
...
# Utiliser aussi des classes personnalisées
students: Dict[str, Student] = {...}
# Annotation pour une logique déclarative
name: str = "Frost" # Avant : name = "Frost"
student_id: int = 91031367
tuition_balance: float = 17452.78
# Annotation pour les définitions de fonctions/méthodes
def get_schedule(semester: str) -> dict:
...
variable: typedef .... () -> type: pour indiquer le type de retourtyping est une bibliothèque qui offre plus d'outils pour annoter les types
List, Dict, Tuplefrom typing import List, Dict
student_names: List[str] = ["Morgan", "Chuck", "Anna"]
student_gpas: Dict[str, float] = {
"Casey": 3.71,
"Sarah": 4.0
}
Any, Set, Iterator, Callableclass Student:
def __init__(self, name: str, student_id: int, tuition_balance: float) -> None:
self.name: str = name
self.student_id: int = student_id
self.tuition_balance: float = tuition_balance
def get_course(self, course_id: str) -> Course:
...
return course
# Utiliser Student et Course pour annoter les types
walker: Student = Student("Sarah Walker", 319921, 15000)
data_science: Course = walker.get_course("TDM-20100")
# walker: Student = Student("Sarah Walker", 319921, 15000)
print(type(walker))
<class '__main__.Student'>
# data_science: Course = walker.get_course("TDM-20100")
print(type(data_science))
<class '__main__.Course'>
Programmation orientée objet intermédiaire en Python