В этом коде были обе логические проблемы, перечисленные выше. И непубличное объявление, и скрытие переменных-членов с использованием того же имени, что и внутреннее.
Учитывая, что мы говорим о переменной 'number' в качестве примера.
Раньше, например, в переменных-членах c ++, которые были частными внутренними переменными, префиксом был 'm_number'. Или кто-то сделал бы просто «_number».
Просто 'num' - это хорошее переименование, но может быть не совсем понятно, что это то же самое значение. Я полагаю, что это проблема именования внутренних закрытых переменных, которая на самом деле не решена.
Python использует «self.number», который будет отличаться от «number», переданного в качестве приемлемого решения.
Но какой бы ни была платформа, всегда хорошо иметь систему именования членов с частными переменными, которая поможет вам избежать взломов в точках, где у вас есть конфликты имен.