Метод свойств Python для защиты частных переменных

#python #python-2.7

#python #python-2.7

Вопрос:

Я пытаюсь изучить концепции OOPS на Python, а теперь пытаюсь научиться обрабатывать личные данные на python. Я узнал, что его можно получить с помощью метода «Property», я выполняю приведенный ниже код, но он выдает мне ошибку, когда я пытаюсь получить доступ к атрибуту.

 class Hello(object):

    def __init__(self, name):
        self.__name = name

    def __setname(self, name):
        self.__name = name
    def __getname(self):
        return self.__name
    name = property(__setname, __getname)
h = Hello("Saumya")
print h.name
TypeError: __setname() takes exactly 2 arguments (1 given)
 

Может ли кто-нибудь помочь мне, где я ошибаюсь?

Спасибо, Saumya

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

1. вы уверены, что property это должно быть там, где вы его разместили?

2. Пожалуйста, исправьте отступ. Это абсолютно необходимо в Python.

3. ваш код полностью поврежден.

4. @Sam Я скорректировал отступ, чтобы он соответствовал использованию, указанному после определения класса. Пожалуйста, отредактируйте дальше, если это неверно.

Ответ №1:

property Функция сначала принимает геттер, затем сеттер:

 name = property(__getname, __setname)
 

Ответ №2:

@michael

Большое спасибо за подсказку, ниже приведен правильный код :-

 >>> class Hello(object):
def __init__(self, name):
    self.__name = name

    def __setname(self, name):
    self.__name = name
def __getname(self):
    return self.__name
    name = property(__getname, __setname)



>>> h = Hello("Saumya")
>>> print h.name
Saumya