大家好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方法的问题,我想在类被实例化时默认运行下面的类方法,但是我不知怎么搞不好。我在这里看到过其他一些帖子,比如[
Calling a class function inside of __init__
[1] 以下内容:
Python 3: Calling a class function inside of __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()一样重复。。。对于每一个实例,都希望直接调用它。