Об использовании подчеркивания или нет при одном и том же атрибуте класса в Python - PullRequest
0 голосов
/ 08 марта 2019

Почему в этом примере автор иногда использует self._temperature и self.temperature (с подчеркиванием и без подчеркивания) для одного и того же атрибута?

class Celsius:
    def __init__(self, temperature = 0):
        self._temperature = temperature

    def to_fahrenheit(self):
        return (self.temperature * 1.8) + 32

    @property
    def temperature(self):
        print("Getting value")
        return self._temperature

    @temperature.setter
    def temperature(self, value):
        if value < -273:
            raise ValueError("Temperature below -273 is not possible")
        print("Setting value")
        self._temperature = value

1 Ответ

3 голосов
/ 08 марта 2019

Здесь используются два отдельных атрибута. _temperature является атрибутом instance , а temperature является атрибутом class , значением которого является объект property. Доступ к temperature инициирует вызов метода, который воздействует на переменную экземпляра _temperature.

Использование подчеркивания указывает на то, что что-то является «частным», и к нему нельзя обращаться напрямую. Общепринято, что имя атрибута, поддерживающего свойство, должно быть именем свойства с префиксом _.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...