3.6 ile yeni eklenen bir özellik

3.6 ile yeni eklenen şu özellik ne işe yarıyor:
https://docs.python.org/3.7/whatsnew/3.6.html#pep-526-syntax-for-variable-annotations

Altındaki yazıdan anladığım kadarıyla verilen sınıfın annotations özelliğini alıyormuş.
Değişken üzerinde hiçbir değişiklik yapmıyor. Yani somut bir işlevi yok.

Python’da daha önce şöyle bir şey yapabiliyorduk:

# Örnek şuradan alınmıştır: https://www.python.org/dev/peps/pep-0526/
# ...
def __init__(self, damage: int, captain: str = None):
        self.damage = damage
        if captain:
            self.captain = captain
# ...

Burada __init__ fonksiyonunun aldığı damage parametresinin int tipinde, captain parametresinin ise str tipinde olması gerektiğini belirtiyoruz.

Bahsettiğiniz değişiklik ile bunu değişkenlerde de belirtebiliyoruz:

# Örnek şuradan alınmıştır: https://docs.python.org/3.7/whatsnew/3.6.html#pep-526-syntax-for-variable-annotations
primes: List[int] = []

captain: str  # Not: Bir ilk değer yok!

class Starship:
    stats: Dict[str, int] = {}
1 Beğeni