[英]Trying to figure out how to pass variables from one class to another in python while calling a class from a dictionary
所以我習慣了在 python 中與 OOP 一起工作,這是一條崎嶇不平的道路,但到目前為止一切似乎都在運作。 但是,我遇到了障礙,我似乎無法弄清楚。 這是前提。
我調用 class 並將 2 個變量傳遞給它,一個報告和位置。 從那里,我需要獲取位置變量,將其傳遞給數據庫並獲取它應該運行的過濾器列表,這是通過字典調用完成的。 最后,一旦字典調用發生,我需要獲取該報告並通過過濾器運行它。 這是我的代碼。
class Filters(object):
def __init__ (self, report, location):
self.report = report
self.location = location
def get_location(self):
return self.location
def run(self):
cursor = con.cursor()
filters = cursor.execute(filterqry).fetchall()
for i in filters:
f = ReportFilters.fd.get(i[0])
f.run()
cursor.close()
class Filter1(Filters):
def __init__(self):
self.f1 = None
''' here is where i tried super() and Filters.__init__.() etc.... but couldn't make it work'''
def run(self):
'''Here is where i want to run the filters but as of now i am trying to print out the
location and the report to see if it gets the variables.'''
print(Filters.get_location())
class ReportFilters(Filters):
fd = {
'filter_1': Filter1(),
'filter_2': Filter2(),
'filter_3': Filter3()
}
我的錯誤來自字典調用,因為當我試圖調用它時它要求報告和位置變量。
希望這對您來說足夠清楚,可以一如既往地得到應有的贊賞。
該死的土撥鼠
對其父 class 的調用應該在 init function 中定義,您應該將 arguments 的“self”、“report”和“location”傳遞給init () 和 Filters。 init () 調用父 class 以便它可以找到那些變量。
如果錯誤在 Filters1 class object 中,當您嘗試使用 run 方法時,您沒有看到從父 class 傳入的位置或報告變量,那是因為您在 ReportFilters 中實例化那些 object 時沒有定義它們.fd
它應該是:
class ReportFilters(Filters):
fd = {
'filter_1': Filter1(report1, location1),
'filter_2': Filter2(report2, location2),
'filter_3': Filter3(report3, location3)
}
class Filter1(Filters):
def __init__(self, report, location):
Filters.__init__(self, report, location)
self.f1 = None
def run(self):
print(self.get_location())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.