Как предотвратить доступ к атрибутам за пределами класса?

#python #python-3.x

#python #python-3.x

Вопрос:

Я определил 3 атрибута (общедоступный, частный и защищенный) и могу получить доступ ко всем из них извне. Как мне предотвратить доступ?

 class Speed:
    def __init__(self):
        self.public_speed = 10
        self._protected_speed = 50
        self.__private_speed = 80


s = Speed()
s.public_speed = 20
print(s.public_speed)

s._protected_speed = 60
print(s._protected_speed)

s.__private_newSpeed = 90
print(s.__private_speed)
 

В результате:

 20
60
90
 

Комментарии:

1. В Python нет закрытых или защищенных атрибутов, и вы просто предотвращаете доступ, не обращаясь к нему.

2. А еще вы пробовали печатать s.__private_speed ?

3. Почему вы хотите запретить доступ? И запретить доступ к кому? Что вы ожидаете получить обратно, если ограниченный пользователь пытается получить к ним доступ?

4. @Brendan. H Я предполагаю, что он исходит из языка программирования, такого как Java, где вы это делаете.

5. @KlausD. Но я могу получить к ним доступ. правильно? Как мне ограничить доступ к переменной?

Ответ №1:

Если вы просто хотите контролировать, чтобы переменные не изменялись, я предлагаю вам использовать magic funcation __setattr__() .

Если вы хотите, чтобы люди не видели переменных. Python не может этого сделать.