Type hints

Gevorderde objectgeoriënteerde programmering in Python

Jake Roach

Data Engineer

Code zonder type hints

class Student:
    def __init__(self, name, student_id, tuition_balance):
        self.name = name
        self.student_id = student_id
        self.tuition_balance = tuition_balance

# Een class maken kan lastig zijn
walker = Student("Sarah Walker", 319921, 15000)
  • Moet student_id een integer zijn?
  • Moet tuition_balance een float of een integer zijn? Of een string?
  • Als walker is gemaakt, hoe onthouden we later in de code het type?
Gevorderde objectgeoriënteerde programmering in Python

Type hints

Optionele tool om info over een object aan code toe te voegen

  • Makkelijker lezen, debuggen
  • Een van de beste manieren om enterprise-grade Python skills te tonen
  • Niet afgedwongen door de interpreter
  • Ingebouwde type keywords, typing-library, eigen classes
# Voeg type hints toe bij het maken van
# een variabele
gpa: float = 3.92
# Voeg type hints toe aan een functie/
# methodedefinitie
def check_grades(year: str) -> List[int]:
    ...
# Je kunt ook eigen classes gebruiken
students: Dict[str, Student] = {...}
Gevorderde objectgeoriënteerde programmering in Python

Type hinting met ingebouwde typekeywords

# Type hints voor declaratieve logica
name: str = "Frost"  # Voorheen: name = "Frost"
student_id: int = 91031367
tuition_balance: float = 17452.78
# Type hints voor functie-/methodedefinities
def get_schedule(semester: str) -> dict:
    ...
  • Gebruik de syntax variable: type
  • Declaratief, signatuur van functie/methode
  • def .... () -> type: om returntype te geven
Gevorderde objectgeoriënteerde programmering in Python

typing-bibliotheek

typing is een library met extra tools voor type hints

  • List, Dict, Tuple
  • Hint toplevel-objecten én de elementen
from 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, Callable
Gevorderde objectgeoriënteerde programmering in Python

Type hinting met eigen classes

class 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
# Gebruik Student en Course voor type hints
walker: Student = Student("Sarah Walker", 319921, 15000)
data_science: Course = walker.get_course("TDM-20100")
Gevorderde objectgeoriënteerde programmering in Python

Objecttypes controleren

# 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'>
Gevorderde objectgeoriënteerde programmering in Python

Laten we oefenen!

Gevorderde objectgeoriënteerde programmering in Python

Preparing Video For Download...