У чым розніца паміж _ і __ у Python?
адказ 1:
Тэарэтычна гэта проста звычайныя імёны зменных. Умоўна адзінкавы падкрэсліванне выкарыстоўваецца ў якасці зменнай, якая не цікавіць. Напрыклад, калі функцыя вяртае картэж, і вас цікавіць толькі адзін элемент, вы можаце пітанічна ігнараваць іншы элемент:
_, x = весела ()
У некаторых мастакоў _ і __ маюць спецыяльныя значэнні і захоўваюць значэнні папярэдніх ацэнак.
Інфармацыю пра вывучэнне Python можна знайсці на https://hackr.io/tutorials/learn ...
адказ 2:
Просты асноўны падкрэсліванне: пазначце зменныя, функцыі, метады і класы як прыватныя
Двайны вядучы падкрэсліванне: уводзіцца паняцце пад назвай "манлінг". Такім чынам, інтэрпрэтацыя Python можа адрозніваць імёны атрыбутаў пры атрыманні ў спадчыну (калі два атрыбуты ў суперкласе і падкласе маюць аднолькавае імя). Гэта дадае _Classname да __manglingVariable і да __Classname__manglingVariable.
Некаторыя людзі выкарыстоўваюць яго як "сапраўды прыватнае", але мы павінны гэтага пазбягаць. У Python не існуе ніякай "сапраўды прыватнай" канцэпцыі.
Да зменнай Mangling можна атрымаць доступ за межамі класа. Глядзіце наступны прыклад.
Клас FirstClass:
!! def __add (самастойна):
!!!! друк (self.num1 + self.num2)
!! def sub (самастойна):
!!!! друк (self.num1-self.num2)
!! def __init __ (самастойная, num1, num2):
!!!! self.num1 = num1
!!!! self.num2 = num2
f = FirstClass (1,2) # экземпляр
f._FirstClass__add () # 3
f () # -1