У чым розніца паміж _ і __ у 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