[英]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.