ООП: методы получения / установки
31797 просмотра
2 ответа
Итак, я прочитал, что вы должны получить доступ к атрибутам объекта через методы получения / установки, такие как object.get_this()
или object.set_that(value)
. Содержит ли этот код методы, которые также определены в классе? Или они предназначены только для использования с экземплярами объектов. Например, идиоматично ли делать это таким образом,
class test:
def __init__(self,value):
self.value = value
def get_value(self):
return self.value
def method(self):
return some_operation(self.value)
с get_value()
определенным для доступа value
к экземпляру объекта, или должны get_value()
также использоваться в методах класса?
class test:
def __init__(self,value):
self.value = value
def get_value(self):
return self.value
def method(self):
return some_operation(self.get_value())
Автор: hatmatrix
Источник
Размещён: 13.11.2019 11:31
Ответы (2)
48 плюса
В python не используйте методы getter / setter . Вместо этого просто получите доступ к самому атрибуту или, если вам нужно, чтобы код запускался каждый раз, когда к атрибуту обращаются или задают, используйте свойства .
Автор: unutbu Размещён: 28.11.2011 03:032 плюса
Я бы не стал обращаться к атрибутам объекта в методах указанного объекта иначе, чем я ожидал бы, что методы от других объектов получат к ним доступ. Почему? Я не уверен, это просто кажется очень странным.
Python делает это действительно легко, если вы используете декоратор свойств, который устраняет необходимость в методах получения / установки, называемых как «get_foo» / «set_foo».
Автор: Wieland Размещён: 28.11.2011 03:05Вопросы из категории :
- python Обработка XML в Python
- python Как я могу использовать Python itertools.groupby ()?
- python Python: На какой ОС я работаю?
- python Как я могу создать непосредственно исполняемое кроссплатформенное приложение с графическим интерфейсом на Python?
- python Вызов функции модуля с использованием его имени (строки)
- python Звук Питона («Колокол»)
- python Regex и unicode
- python Создать зашифрованный ZIP-файл в Python
- python Создайте базовый итератор Python
- python Функция транспонирования / распаковки (обратная сторона zip)?
- oop Передать по ссылке или передать по значению?
- oop Что такое инверсия контроля?
- oop Когда вы должны использовать «друг» в C ++?
- oop Предпочитаете композицию наследству?
- oop Когда вы должны использовать класс против структуры в C ++?
- oop В чем разница между старым и новым стилем классов в Python?
- oop Частные методы JavaScript
- oop Каков пример Принципа замещения Лискова?
- oop Интерфейс против Базового класса
- oop Что такое принцип обращения зависимостей и почему он важен?