【发布时间】:2019-09-27 23:14:28
【问题描述】:
我有一个类,并且在该类的一个方法中,我有一个从用户输入给出的字符串,然后将其映射到相应的方法(技术上是该方法的 str 表示)。我如何在没有创建类实例的情况下调用此方法,即使用 self.争论。我已经包含了我认为可行的内容,但它没有......
class RunTest():
def __init__(self, method_name):
self.method_name = method_name #i.e., method_name = 'Method 1'
def initialize_test(self):
mapping = {'Method 1': 'method1()', 'Method 2': 'method2()', ...}
test_to_run = getattr(self, mapping[self.method_name])
def method1(self):
....
def method2(self):
....
【问题讨论】:
-
你想调用什么方法?它属于类吗?
-
根据字符串method_name,它将是上面代码中的method1() 或method2() 之一。所以,回答你的第二个问题,是的,它属于类
-
如何在不启动类的情况下设置
method_name?它是在创建实例时设置的。 -
对不起,我是 python 新手......所以你不能让一个方法依赖于另一个?
-
其实我知道只要有 self.method(),你就可以在另一个方法中调用它。我想做同样的事情,除了这个方法是字符串格式的。我想拿走字符串,让它像 self.method1() (或 self.method2())一样工作
标签: python-3.x class methods getattr