Я новичок в OOP python и пытаюсь понять, как обрабатывать экземпляры, у меня есть метод:
class Object:
things = []
def __init__(self, table):
self.table = table
self.things.append(table)
( ... )
def thingy(self):
return self.db.execute(f"select date, p1, p2 from {self.table}")
def all_things(self):
self.things.extend(
map(lambda t: Object(thing=t + '_thing').thingy(), Constants.THINGS))
return self.things
Теперь, как бы я назвал этот объект, потому что моя вещь управляется по списку из Constants.THINGS
, IE: THINGS = ["table1", "table2" ... ]
, но для создания объекта для вызова метода all_things()
- мне нужно установить вещь - даже если метод устанавливает вещь по вызову ...
Это кажется немного отсталым, поэтому буду признателен за то, что я неправильно понимаю, так как думаю, что мне нужно изменить конструктор / объект
a = Object(end_date="2020-01-05",
start_date="2020-01-01",
thing=WHAT_TO_PUT_HERE).all_things()
Если я добавлю что-нибудь к этому thing
Я получу двойной вывод
Любая помощь приветствуется
Желаемым выводом будет то, что thing()
сработает, основываясь на вводе списка предоставляется Constants.THINGS
, если мы введем: THINGS = ["table1", "table2"]
, мы ожидаем, что thingy()
выполнится дважды с:
select date, p1, p2 from table1
, select date, p1, p2 from table2
И это будет добавлено к things
переменная класса, а затем, когда all_things()
завершится, мы должны иметь содержимое двух операторов выбора в ist
Однако
Object.things
фактически будет иметь [WHAT_TO_PUT_HERE, table_1, table2]