使用 getattr 从同一 class 中的另一个方法调用方法
Calling a method from another method inside the same class using getattr
我不确定这里出了什么问题。
import pandas as pd
class Data:
def __init__(self,database_name):
self.database_name=database_name
self.the_data_reader= getattr(Data, 'read_'+database_name.lower())
def read_data(self):
self.the_data_reader()
# Parametros basicos da base
def read_opnosis(self):
self.texts_df=pd.DataFrame(columns=['name','text'])
self.summaries_df=pd.DataFrame(columns=['name','summary'])
if __name__ == '__main__':
data=Data('opnosis')
data.read_data()
但是,我收到此错误:
TypeError:read_opnosis() 缺少 1 个必需的位置参数:'self'
我认为你需要使用 eval
功能。
import pandas as pd
class Data:
def __init__(self,database_name):
self.database_name=database_name
self.the_data_reader= getattr(self, 'read_'+database_name.lower())
def read_data(self):
self.the_data_reader()
# Parametros basicos da base
def read_opnosis(self):
self.texts_df=pd.DataFrame(columns=['name','text'])
self.summaries_df=pd.DataFrame(columns=['name','summary'])
if __name__ == '__main__':
data=Data('opnosis')
data.read_data()
希望对您有所帮助。
我不确定这里出了什么问题。
import pandas as pd
class Data:
def __init__(self,database_name):
self.database_name=database_name
self.the_data_reader= getattr(Data, 'read_'+database_name.lower())
def read_data(self):
self.the_data_reader()
# Parametros basicos da base
def read_opnosis(self):
self.texts_df=pd.DataFrame(columns=['name','text'])
self.summaries_df=pd.DataFrame(columns=['name','summary'])
if __name__ == '__main__':
data=Data('opnosis')
data.read_data()
但是,我收到此错误:
TypeError:read_opnosis() 缺少 1 个必需的位置参数:'self'
我认为你需要使用 eval
功能。
import pandas as pd
class Data:
def __init__(self,database_name):
self.database_name=database_name
self.the_data_reader= getattr(self, 'read_'+database_name.lower())
def read_data(self):
self.the_data_reader()
# Parametros basicos da base
def read_opnosis(self):
self.texts_df=pd.DataFrame(columns=['name','text'])
self.summaries_df=pd.DataFrame(columns=['name','summary'])
if __name__ == '__main__':
data=Data('opnosis')
data.read_data()
希望对您有所帮助。