У меня есть родительский класс, в котором есть установщик, который возвращает значение queryFiltre, и получатель, который должен передать значение queryFiltre моему дочернему классу. queryFiltre должен возвращать SQL-запрос, такой как «SELECT * FROM Report WHERE GA_RPM> 0 и CAMPAIGN LIKE '% TT%' ...".
print () в установщике возвращает SQL-запрос, но print () геттера при вызове в дочернем классе возвращает что-то вроде "<<strong> main .SimpleGrid object at 0x042AF2B0>".
Что не так с моим кодом? Пожалуйста, терпите меня, потому что я все еще учусь, и у меня в голове все еще абстрактное понятие.
Я добавил комментарии в код, чтобы вы могли видеть, что происходит, где:
class SimpleGrid(gridlib.Grid): ##, mixins.GridAutoEditMixin):
def __init__(self, parent, log):
gridlib.Grid.__init__(self, parent, -1)
########### DATABASE CONNECT
self.path =os.path.dirname(os.path.realpath(__file__))
self.dbfile = os.path.join(self.path , "report.db")
self.db_conn = sqlite3.connect(self.dbfile)
self.theCursor = self.db_conn.cursor()
########### SETTING FILE CONNECT
self.configFile = os.path.join(self.path , "config.ini")
self.config = configparser.ConfigParser()
self.config.read(self.configFile)
########### Calling th Getter and Setter
self.queryFiltre = self.setQueryFiltre(self)
self.getQueryFiltre()
########### Setter
def setQueryFiltre(self,queryFiltre):
if self.config.get('Network', 'taboola') == "true" and self.config.get('Network', 'ob') == "true":
network = ""
elif self.config.get('Network', 'taboola') == "true" and self.config.get('Network', 'ob') == "false":
network = " and CAMPAIGN LIKE '%TB%'"
elif self.config.get('Network', 'outbrain') == "true" and self.config.get('Network', 'tb') == "false":
network = " and CAMPAIGN LIKE '%OB%'"
else:
network = ""
queryFiltre = "SELECT * FROM Report WHERE GA_RPM > 0 " + network + " and STATUS = '1' ORDER BY CLICKS DESC"
########### The print below returns the right value of queryFiltre
print(queryFiltre)
return queryFiltre
########### Getter
def getQueryFiltre(queryFiltre):
queryFiltre = queryFiltre
return queryFiltre
class TestFrame(wx.Frame):
def __init__(self, parent, log):
wx.Frame.__init__(self, parent, 0, "Native Ads Reports V1.0", size=(1400,800))
self.grid = SimpleGrid(self, log)
########### Calling the Getter of the parent Class
self.queryFiltre = self.grid.getQueryFiltre()
########### DATABASE CONNECT
self.path =os.path.dirname(os.path.realpath(__file__))
self.dbfile = os.path.join(self.path , "report.db")
self.db_conn = sqlite3.connect(self.dbfile)
self.theCursor = self.db_conn.cursor()
########### The print below returns a bad value, something like : <__main__.SimpleGrid object at 0x042AF2B0>
print(self.queryFiltre)
Вы также заметите, что я добавил скрипт для определения пути и подключения к БД в обоих классах, есть ли способ сделать это только один раз в первом классе?
Спасибо,