繁体   English   中英

如何从作为变量 3.7 一部分的字符串中引用 class

[英]How to reference a class from a string which is part of a variable 3.7

我刚刚阅读了一个文本文件并提取了一个字符串并将其存储为一个变量。 这个字符串也恰好是我想引用的 class 的名称,以便在 function 中使用。 “which_class”变量是存储在文件中的 class

我尝试将 which_class 变量作为参数传递给 function。 删除引号似乎使它起作用,但我不确定如何做到这一点。

class needed_for_func_one():
    multiplier = 1.23

class needed_for_func_two():
    multiplier = 1.15


def random_function(which_class):
    print(123 * which_class.multiplier)

PSEUDO CODE
READ FROM FILE STORE STRING AS "which_class"

which_class = "needed_for_func_two"


random_function(which_class)

但这不起作用,它只是给了我一个属性错误

eval function 可以在这里为您提供帮助。

random_function(eval(whichClass))

但是,您可能应该重新考虑是否真的要那样做,或者是否有更清洁的解决方案。

我认为您的问题与有关您如何调用 function 取决于它是全局 function 还是在 object 内部。

globals()['call_this_function']() # this is probably what you need

或者

getattr(from_this_object, 'call_this_function')()

首先,要使用 class,您需要 class 的 object。 因此,如果您阅读的是 class 的名称或任何其他无关紧要的东西,只需使用 if 语句来确定该变量中的内容,即所谓的“which_class”。 然后创建一个 object 像:

if which_class=="needed_for_func_one":
    newObject = needed_for_func_one()
elseif which_class=="needed_for_func_two":
    newObject = needed_for_func_two()

然后使用像这样的打印:

print(123 * newObject.multiplier )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM