Так что сегодня я спросил, есть ли что-то вроде Protected
класса участников в Python, где многие люди говорят, что нет ничего подобного. или Private
. Но я сделал следующий код, чтобы проверить это:На самом деле это не инкапсуляция в Python
class Vehiculo():
def __init__(self, peso):
self.__peso = peso
и от внешнего класса я сделал:
car = Vehiculo(10)
car.__peso = 20
и что это напечатано было еще 10, так что это как Private
, однако, когда я изменил переменная класса с одним подчеркиванием:
class Vehiculo():
def __init__(self, peso):
self._peso = peso
оно напечатано 20 вместо. Может ли кто-нибудь это объяснить мне? Я читал очень похожую статью (которую многие считают дубликатом), но я НЕ ПОНИМАЮ, что они говорят. Это как раз поведение Public
Private
. И я хотел бы знать, как сделать поведение Protected
, или если это возможно.
Спасибо и регаты.
Как я уже говорил, я сделал несколько тестов, и двойное подчеркивание не позволило мне получить доступ к этой переменной из другого модуля или класса, если я не использовал функцию setter ... – Wrong
Вы не показывали, как вы пытались распечатать двойное значение подчеркивания. Скорее всего, вы неправильно обращались к нему. – Soviut
Я уверен, что это правильно ... Может быть, это как-то связано с проверкой python? Я использую 3.5.2 – Wrong