如何在 Python 中构建用于迭代尝试的方法列表?
How can i build a list of Methods for iterative try in Python?
我有一个具有不同级别的数据结构,如下所示:
数据1--方法1--数据2--方法2--数据3
Data2=Data1.method1
每个级别的数据需要不同的方法来处理。我想知道我是否可以构建一个 Methode 列表以“深入挖掘”,例如 [Method1、Method2、...]。我将通过尝试列表中的所有方法来编写一个循环来“挖掘”数据。
我有这个想法是因为我们在python中调用方法时会在屏幕上输入字符串,例如我输入print()来调用打印函数。我们能否使方法的字符串可替换,以便我可以将 print() 更改为 list() 或其他内容?
那么我可以建立这样一个“方法列表”吗?如果可以,我应该使用什么数据类型?
在 python 中,方法可以像变量一样对待。
下面是两个不包含输入参数的不同方法函数的示例。
def method1():
# do something
return 1
def method2():
# do something else
return 2
methods = [method1, method2]
for m in methods:
print(m())
你需要小心参数,如果他们都期望相同的输入,它会更容易。下面是另一个例子,其中两个方法被添加到一个列表中,它们都需要一个整数作为参数。
def method1(arg):
# do something
return arg*1
def method2(arg):
# do something else
return arg*2
methods = [method1, method2]
for m in methods:
print(m(5))
此外,我们可以考虑一种方法正在尝试可能不起作用的情况。为此,我们可以在循环中添加一个 try / except 块。如果我们尝试的方法抛出异常,这将继续循环。
def method0(arg):
return arg/(arg - 5)
def method1(arg):
# do something
return arg*1
def method2(arg):
# do something else
return arg*2
methods = [method0, method1, method2]
for m in methods:
try:
print(m(5))
except:
print(f'{m.__name__} did not work')
产生输出
method0 did not work
5
10
假设您有一个 class 对象,其中包含 functions/methods。这些可以添加到这样的列表中:
class DataType:
val = 5
def method0(self, arg):
return arg/(arg - self.val)
def method1(self, arg):
# do something
return arg*1
def method2(self, arg):
# do something else
return arg*2
# instantiate the class object
obj = DataType()
# add methods to list from the object
methods = [obj.method0, obj.method1, obj.method2]
for m in methods:
try:
print(m(5))
except:
print(f'{m.__name__} did not work')
生成与上面相同的输出
method0 did not work
5
10
我有一个具有不同级别的数据结构,如下所示: 数据1--方法1--数据2--方法2--数据3 Data2=Data1.method1
每个级别的数据需要不同的方法来处理。我想知道我是否可以构建一个 Methode 列表以“深入挖掘”,例如 [Method1、Method2、...]。我将通过尝试列表中的所有方法来编写一个循环来“挖掘”数据。
我有这个想法是因为我们在python中调用方法时会在屏幕上输入字符串,例如我输入print()来调用打印函数。我们能否使方法的字符串可替换,以便我可以将 print() 更改为 list() 或其他内容?
那么我可以建立这样一个“方法列表”吗?如果可以,我应该使用什么数据类型?
在 python 中,方法可以像变量一样对待。
下面是两个不包含输入参数的不同方法函数的示例。
def method1():
# do something
return 1
def method2():
# do something else
return 2
methods = [method1, method2]
for m in methods:
print(m())
你需要小心参数,如果他们都期望相同的输入,它会更容易。下面是另一个例子,其中两个方法被添加到一个列表中,它们都需要一个整数作为参数。
def method1(arg):
# do something
return arg*1
def method2(arg):
# do something else
return arg*2
methods = [method1, method2]
for m in methods:
print(m(5))
此外,我们可以考虑一种方法正在尝试可能不起作用的情况。为此,我们可以在循环中添加一个 try / except 块。如果我们尝试的方法抛出异常,这将继续循环。
def method0(arg):
return arg/(arg - 5)
def method1(arg):
# do something
return arg*1
def method2(arg):
# do something else
return arg*2
methods = [method0, method1, method2]
for m in methods:
try:
print(m(5))
except:
print(f'{m.__name__} did not work')
产生输出
method0 did not work
5
10
假设您有一个 class 对象,其中包含 functions/methods。这些可以添加到这样的列表中:
class DataType:
val = 5
def method0(self, arg):
return arg/(arg - self.val)
def method1(self, arg):
# do something
return arg*1
def method2(self, arg):
# do something else
return arg*2
# instantiate the class object
obj = DataType()
# add methods to list from the object
methods = [obj.method0, obj.method1, obj.method2]
for m in methods:
try:
print(m(5))
except:
print(f'{m.__name__} did not work')
生成与上面相同的输出
method0 did not work
5
10