当前位置: 首页 > 知识库问答 >
问题:

如何在循环中调用一个类的多个方法?

索吕恭
2023-03-14

我有一个类(称为name),它有如下不同的方法:

alex(), john(), claire(), charles(), luke(), richard(), jen()等等

我需要逐一调用所有这些方法,例如:

name.alex()
name.john()
name.claire()
name.charles()
name.luke()
name.richard()
name.jen()

... 等等

我尝试的是创建一个名称列表,并调用循环中的所有方法

names_list = ['alex', 'john, 'claire', 'charles', 'luke', 'richard', 'jen']

for i in range(len(names_list)):
    class_name.names_list[i]()

但这种调用方法的方式正在失败。有没有办法在循环中调用同一类的多个方法?

共有2个答案

戚逸清
2023-03-14

如果要这样做,可以使用getattr:

names_list = ['alex', 'john', 'claire', 'charles', 'luke', 'richard', 'jen']

for name in names_list:
    getattr(class_name, name)()

注意,这假设class\u name是类的实际实例,或者这些方法是staticmethods。否则,您将需要class\u name()

金令秋
2023-03-14

当然存储实际方法:

name = YourClass()
methods = [name.alex,  name.john, name.claire ] # ...

for m in methods:
    m()

我猜你有一个xy问题——你想做的是有问题地试图解决一个你可以避免使用其他类型设计的问题。

对于大约一百万个名字,每个名字有一个方法是不切实际的...

 类似资料:
  • 我正在寻找一些帮助来优化我的代码并使用更少的行数编写它。我有一个Class say A,它有几个定义的方法,如下所示: 现在我有一个单独的类,比如B和方法,编写如下 所有这些代码都运行良好。我只是想看看是否有更好的方法可以继续调用像objA这样的方法。verifyMyMethods()中的doSomethingA(),因此我可以使用更少的代码行来完成相同的工作。 我想在循环中调用方法doSomet

  • 假设我有一些这样的方法: 但我不想调用序列方法: 这很无聊。如果我添加一个新方法:,我需要添加手动:

  • 问题内容: 所以我基本上想做的很简单 由于某种原因,它无法正常工作。在我的Javascript控制台(Chrome浏览器)中 编辑1:我已经添加了实际的代码,如您所见,我在构造函数中绑定了validateEmail 问题答案: 您的方法已正确定义,因此问题出在如何 调用上 。 您以一种设置为实例以外的方式调用它。这在事件侦听器中很常见。我想您的代码中有一些类似的代码: React 的推荐解决方案是

  • 问题内容: 在Bruce Eckel的“ Thinking In Java,第四版”的第428页(有关类型信息的章节)中,具有以下示例: 也许我有点累,但是我看不到add()方法中对add()的调用是如何工作的。我一直认为它应该有一个引用,或者是一个静态方法(并且我在ArrayList或List中找不到静态add())。我想念什么? 我只是为自己测试,发现这可行: 问题答案: Java为这样的方法

  • 问题内容: 我有四个foreach循环,这些循环遍历集合并根据条件进行操作。 这是我现在正在编写的代码: 主要对象(代码中的对象)来自第三方提供程序SDK,因此我无法在该部分上进行任何更改。我想问一下Stack Overflow社区是否有更好的方法来打破所有四个foreach循环。或者,如果还有其他方法可以重构此代码,使其更具可读性和可维护性。 问题答案: 在最外面的循环上使用标签,当您想跳出所有

  • 问题内容: 假设您必须在python中创建10个类对象,并对其进行处理,例如: 您将如何循环处理,并为每个对象分配一个变量(如),从而使代码更短?每个对象都可以在循环外部访问 问题答案: 每天都会以不同的方式询问这个问题。答案是:将数据放在变量名之外,这是必填的博客文章。 在这种情况下,为什么不列出objs?