当前位置: 首页 > 面试题库 >

通过名称调用Python方法

唐麒
2023-03-14
问题内容

如果我在字符串中有一个对象和一个方法名称,该如何调用该方法?

class Foo:
    def bar1(self):
        print 1
    def bar2(self):
        print 2

def callMethod(o, name):
    ???

f = Foo()
callMethod(f, "bar1")

问题答案:

使用内置getattr()功能:

class Foo:
    def bar1(self):
        print(1)
    def bar2(self):
        print(2)

def call_method(o, name):
    return getattr(o, name)()


f = Foo()
call_method(f, "bar1")  # prints 1

您还可以setattr()用于通过名称设置类属性。



 类似资料:
  • 问题内容: 我在这里找到了一个函数调用http://golang.org/pkg/reflect/#Value.MethodByName,但这并不是我想要的!(也许是因为我不知道如何使用它……我找不到任何示例)。我想要的是: 所以我想,首先我需要类似的东西,然后将其用于,对!! 问题答案: 要在对象上调用方法,请先使用。然后按名称查找方法,然后最后调用找到的方法。例如:

  • 问题内容: Python:如何在被调用方法中获取调用者的方法名称? 假设我有2种方法: 如果我不想对method1进行任何更改,如何在method2中获取调用方的名称(在本示例中,名称为method1)? 问题答案: 和其他相关功能可以帮助: 该自省旨在帮助调试和开发;建议不要出于生产功能目的而依赖它。

  • 问题内容: 我在看下面的代码,发现有些奇怪: 我期望这样做会导致编译错误,因为带有“ y”的不仅仅属于方法声明。为什么这样有效?我不知道如何或应该调用此代码。 运行它时,它还会产生,为什么在序列构造函数之前调用get? 问题答案: 这个: 是一个 静态初始化块 ,并在加载类时调用。您可以根据需要在类中添加任意数量的对象,它们将按照其出现顺序(从上到下)执行。 这个: 是一个 初始化块 ,并将代码复

  • 问题内容: 几个具有相同名称的进程正在主机上运行。使用 python 或 jython 按名称获取那些进程的PID的跨平台方法是什么? 我想要类似但在python中的东西。(我没有。) 我无法解析,因为它可能不可用(在HP-UX上)。 我不想运行并解析输出,因为我认为它很丑陋(不同操作系统中的字段顺序可能不同)。 目标平台是Solaris,HP-UX,也许还有其他平台。 问题答案: 您可以使用在W

  • 问题内容: 我使用上面的python代码来练习一些基本的Selenium操作。我找不到任何元素,无论是名称还是ID。不管我尝试什么,我总是会遇到相同的错误,这表明我要查找的元素不存在。(想法是按一下其中一个按钮…) 这是网站html代码的一部分: 这是所说的网站(链接断开) 任何帮助将不胜感激。 顺便说一句,这是我尝试运行的第一个使用Selenium的程序,是否有可能需要更改某些设置或需要安装其他

  • 我一直在尝试在网页上查找一个元素,该元素与其他元素同名,没有id。它确实有不同的值,因此我希望通过名称和值查找该元素。 在我的网页我有一个搜索按钮: 我不能使用name,因为我有另一个具有相同名称和类型的元素: 因此,我尝试使用xpath,我开始使用xpath检查器返回返回的xpath: 这又是一个非常新的,但我假设“x:”不应该在路径中,所以我删除了这个,并试图找到以下元素: 这导致: 所以我真