Python3: доступ к свойству родительского класса объекта - PullRequest
0 голосов
/ 10 ноября 2019

Я пытаюсь получить доступ к свойству «getter» родительского класса объекта и передать его в качестве аргумента функции. Проблема в том, что он передает значение из «getter», а не саму функцию getter. Я хотел бы иметь возможность передавать эту функцию в другой класс и получать обновленное значение при каждом вызове.

Например, если значение, возвращаемое функцией-получателем, при передаче равно 77, передается значение 77, а не сама функция. Цель состоит в том, чтобы передать функцию, которая возвращает текущее значение, а не значение при первом прохождении.

Я попытался найти свойство в __dict__ объекта, но оно показывает только методы и т. Д. Для дочернего элемента. класс а не базовый класс. Я попытался использовать super как способ получить доступ к этому, но не смог выяснить, был ли это правильный путь.

################### Class definitions from library ###################
# The parent class from the library
class Adafruit_BME280():
     # ... Removed Code ...
     @property
     def temperature(self):
          self._read_temperature()
          return self._t_fine / 5120.0

# The child class from the library
class Adafruit_BME280_I2C(Adafruit_BME280):
     # ... Removed Code ...

################### My Code ###################
# My new class that is passed a function to get temperature
class TempSensor:
     def __init__(self, get_temperature_func):
          self.get_temperature = get_temperature_func

     def print_temperature():
          print(self.get_temperature)

# My main function where the object is created
def main():
     bme280 = Adafruit_BME280_I2C()
     temp_sensor = TempSensor(bme280.temperature)
     temp_sensor.print_temperature
# 

В приведенном выше коде, если температура, когда объект TempSensor составляет 77.0 градусов, когда онзатем создается temp_sensor.print_tempera, вместо текущей температуры всегда печатает 77.0 вместо текущей температуры.

...