Привет, ребята из Stackoverflow, ... Надеюсь, на этот вопрос еще нет ответа.После полдня гуглинга я смирился с тем, чтобы задать вопрос здесь.Моя проблема заключается в следующем:
Я хочу создать класс, который принимает некоторую информацию и обрабатывает эту информацию:
#Klassendefinition für eine Instanz von Rohdaten
class raw_data():
def __init__(self, filename_rawdata, filename_metadata,
file_format, path, category, df_raw, df_meta):
self.filename_rawdata = filename_rawdata
self.filename_metadata = filename_metadata
self.file_format = file_format
self.path = path
self.category = category
self.df_raw = getDF(self.filename_rawdata)
self.df_meta = getDF(self.filename_metadata)
# generator
def parse(self, path):
g = gzip.open(path, 'rb')
for l in g:
yield eval(l)
# function that returns a pandas dataframe with the data
def getDF(self, filename):
i = 0
df = {}
for d in self.parse(filename):
df[i] = d
i += 1
return pd.DataFrame.from_dict(df, orient='index')
Теперь у меня проблема с методом init, я хотел быЗапустите метод класса ниже по умолчанию, когда класс создан, но мне как-то не удается заставить это работать.Я видел несколько других постов, таких как [ Вызов функции класса внутри __init __ [1]: Python 3: Вызов функции класса внутри __init __ , но я все еще не могу сделатьЭто.Первый вопрос сработал для меня, но я хотел бы вызвать переменную экземпляра после запуска конструктора.
Я попробовал это:
class raw_data():
def __init__(self, filename_rawdata, filename_metadata,
file_format, path, category):
self.filename_rawdata = filename_rawdata
self.filename_metadata = filename_metadata
self.file_format = file_format
self.path = path
self.category = category
getDF(self.filename_rawdata)
getDF(self.filename_metadata)
# generator
def parse(self, path):
g = gzip.open(path, 'rb')
for l in g:
yield eval(l)
# function that returns a pandas dataframe with the data
def getDF(self, filename):
i = 0
df = {}
for d in self.parse(filename):
df[i] = d
i += 1
return pd.DataFrame.from_dict(df, orient='index')
Но я получаю ошибку, потому что getDF неопределено (очевидно) .. Я надеюсь, что этот вопрос не глупый ни в коем случае.Мне нужно сделать это таким образом, потому что после этого я хочу выполнять как 50-60 вызовов экземпляра, и я не хочу повторять, как Instance.getDF () ... для каждого экземпляра, а скорее хотел бы, чтобы он вызывался напрямую.