Пожалуйста, не смейтесь. Я в отчаянии.Свойства с сахаром и без него
Вот канонический пример класса питона с геттер и сеттер (от Wikipedia):
class Student(object):
# Initializer
def __init__(self, name):
# An instance variable to hold the student's name
self._name = name
# Getter method
@property
def name(self):
return self._name
# Setter method
@name.setter
def name(self, new_name):
self._name = new_name
Теперь моя версия без декораторов:
class Student(object):
# Initializer
def __init__(self, name):
# An instance variable to hold the student's name
self._name = name
# Getter method
def name(self):
return self._name
name=property(fget=name)
# Setter method
def set_name(self, new_name):
self._name = new_name
name = property(fset=set_name)
... за исключением того, что вторая версия просто не работает. Если мы установим класс Студента, например. Bob=Student('Bob')
, Bob.name выбрасывает атрибут AttributeError: нечитаемый.
Я обещаю пожертвовать 100 очков, как только моя репутация достигает 10k к доброй душе, которая наклоняется, чтобы указать на ошибку перед downvotes начать вливать
Что вы хотите сказать? –
Извините, вторая половина вопроса не сделала это с первой попытки. Надеюсь, теперь этот вопрос будет читабельным. –
Код в виде отступов не будет работать. Пожалуйста исправьте. – chepner