我有一個如下的類,在該__init__方法中,我嘗試使用類方法將 True/False 值分配給類屬性。
class Sensor:
def __init__(self, json_data):
self.sensor_eui = json_data['end_device_ids']['dev_eui']
self.reading1 = json_data['uplink_message']['decoded_payload']['temperature']
self.reading2 = json_data['uplink_message']['decoded_payload']['humidity']
self.tolerance_exceeded = self.tolerance_check
def tolerance_check(self):
sql = f"SELECT DefaultLowerLimit, DefaultUpperLimit FROM [dbo].[IoT_Sensors] WHERE
DeviceID = '{self.sensor_eui}'"
results = exec_sql(sql)
if (self.reading1 > int(results[0])) and (self.reading1 < int(results[1])):
return False
return True
問題是,當嘗試對此進行故障排除并將物件記錄到控制臺時,它不會回傳 True 或 False 作為“tolerance_exceeded”的分配值,而是回傳方法和物件:
logging.info(f'Tolerance Exceeded: {sensor.tolerance_exceeded}')
登錄控制臺如下:
[2022-10-26T12:08:08.025Z] Tolerance Exceeded: <bound method Sensor.tolerance_check of <__app__.IoT_Data-Handler.classes.Sensor object at 0x000001C834D45BE0>>
那么這里發生了什么?我寫代碼的時間不長,但是當我過去做過類似的事情(從 API 分配字串值)時,它作業得很好。這是針對 Azure 函式的,但我看不出這會如何影響我想要實作的目標。
任何幫助,將不勝感激。
uj5u.com熱心網友回復:
您的代碼中的問題是,您沒有呼叫分配它的函式。為了呼叫該函式,您必須添加括號。
class Sensor:
def __init__(self, json_data):
self.sensor_eui = json_data['end_device_ids']['dev_eui']
self.reading1 = json_data['uplink_message']['decoded_payload']['temperature']
self.reading2 = json_data['uplink_message']['decoded_payload']['humidity']
# Calling tolerance_check and assigning return value to tolerance_exceeded
self.tolerance_exceeded = self.tolerance_check()
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/521495.html
標籤:Python班级类方法
上一篇:有條件地定義類的方法
下一篇:從int到類的型別轉換行為怪異
