__init __ (self) -> Yok: vs __init __ (self): python'da [duplicate]
1) __init__(self) -> None:ve 2) arasındaki fark nedir __init__(self):?
class A:
def __init__(self) -> None:
self.a = 5
class B:
def __init__(self):
self.a = 5
print (" A : ", A().a)
print (" B : ", B().a)
Yanıtlar
Bu -> Nonekısım bir tür ipucudur. PEP 484'te tanıtıldı . Buradan daha fazla bilgi edinebilirsiniz . Gösterdiğiniz her iki __init__yöntem de çalışma zamanında eşdeğerdir. Yazım ipuçları, mypy veya Pyright gibi tür denetleyiciler tarafından kullanılabilir .
Bu mypydokümantasyon parçası bunu mükemmel bir şekilde özetliyor:
Mypy, statik bir analizci veya tüy benzeri bir araç olduğundan, tür ek açıklamaları yalnızca mypy için ipuçlarıdır ve programınızı çalıştırırken karışmaz. Programınızı standart bir Python yorumlayıcısı ile çalıştırırsınız ve ek açıklamalar etkili bir şekilde yorum olarak ele alınır.
Bu aynı zamanda -> None, __init__yöntemi uygulamaya koymanın ardındaki mantığı açıklayan ilginç bir PEP 484 parçasıdır .
( Başlatma dönüş türünün -> Yok ile açıklanması gerektiğine dikkat edin. Bunun nedeni belirsizdir. Eğer init , -> Yok şeklinde bir dönüş ek açıklaması varsayarsa, bu, argümansız, açıklamasız bir init yönteminin olması gerektiği anlamına gelir mi? Bu belirsizliği bırakmak veya istisnaya bir istisna getirmek yerine, basitçe init'in bir dönüş ek açıklamasına sahip olması gerektiğini söylüyoruz ; bu nedenle varsayılan davranış, diğer yöntemlerle aynıdır.)