Проблем с encapsulation
Здравейте,
Попаднах на един бейсик пример в нета за енкапсулация, но не разбирам защо output-a е 5 6 вместо 5 2 или 1 6 ?
https://pastebin.com/A8uXPi13
Здравейте,
Попаднах на един бейсик пример в нета за енкапсулация, но не разбирам защо output-a е 5 6 вместо 5 2 или 1 6 ?
https://pastebin.com/A8uXPi13
Здравей,
При класовете в Python единичен или двоен символ долна черта са част naming convention, като служат за връзка с определени правила и процеси.
Когато в класа X сложиш име __num1, това ще сочи към _X__num1. При наследяването в клас Y, въпреки че името е същото, отзад ще сочи към _Y__num1. Тук засягаш една от целите да се дефинира атрибут с долни черти отпред при наследяване- Да се ограничи override на стойността от наследяващите класове.
За по-добро разбиране и тестване как работи можеш да ползваш функция vars(), която връща речник от атрибутите на обекта.
Например след инстанциране на клас Y, ако принтираш този речник:
print(vars(obj))
{'_X__num1': 5, 'num2': 6, '_Y__num1': 1}
Тук се вижда, че имаш 3 атрибута. Стойностите в клас X са 5 и 6, и защото display_values ти е в клас X изхода е: 5 6.
Ако display_values беше в клас Y щеше да изкара: 1 6