Python 如何调用给定名称的类方法?
我试图通过从外部文件提取的变量名调用类方法,如下所示: structures.py:Python 如何调用给定名称的类方法?,python,class,variables,Python,Class,Variables,我试图通过从外部文件提取的变量名调用类方法,如下所示: structures.py: event_map = {'year' : 'get_year'} 类别代码: class MyClass(object): def __init__(self): self._analyze() def _analyze(self): event_method = event_map['year'] self.event_method() #
event_map = {'year' : 'get_year'}
类别代码:
class MyClass(object):
def __init__(self):
self._analyze()
def _analyze(self):
event_method = event_map['year']
self.event_method() #<--------------this doesn't work
def get_year(self):
print('here')
类MyClass(对象):
定义初始化(自):
自我分析
def_分析(自我):
事件\方法=事件\映射['year']
self.event_method()#Python有一个getattr(object,name)
函数来调用名为字符串的函数。您可以使用getattr(self,event\u方法)(
:
您可以使用getattr
按名称获取属性:
getattr(self, event_method)()
dict中的“get_year”是一个字符串,而不是一个方法。此外,您还设置了event\u方法,但随后使用self.event\u方法。此外,事件映射似乎是在您的类之外声明的,因此它不会知道get\u year
是什么。您的示例很奇怪,也不清楚,但您可以在实际代码上尝试“event\u method(self)”,因为在本例中,代码事件映射方法是一个字符串,无法工作。我想“我从外部文件中提取”这到底是什么意思?
getattr(self, event_method)()