Python:如何使用Importlib创建类对象

阳光

我知道类似的问题已经问过几次。但是请继续阅读..

我正在尝试根据Python 3.6中“将字符串转换为Python类对象”中所述的字符串值创建类

utils.py

class Foo(object):
    def __init__(self):
        print("In the constructor of Foo")

    def What(self):
        print("so what ... ")

class FooParam(object):
    def __init__(self, v):
        self.value = v
        print("In the constructor of FooParam")

    def What(self):
        print("Value=" % self.value)
        print("So what now ...")

welcome.py

def TEST1():
    m = importlib.import_module("utils")
    c = getattr(m, "Foo")
    c.What()  

if __name__ == '__main__': 
    TEST1()

错误

TypeError: What() missing 1 required positional argument: 'self'

那我在做什么错呢?

还有如何创建“ FooParam”对象并将值传递给构造函数。

随机鲍勃

我怀疑c是类Foo,但不是该类的实例。

这相当于简单地调用

Foo.what()

这就是为什么自我没有定义的原因!

而您想要的是创建该类的实例(为其赋予“ self”属性),然后调用其方法,即

foo_instance = Foo()
foo_instance.What()

所以尝试用..替换c.What()

foo_instance = c()
foo_instance.What()

对于FooParam:

#import the class FooParam
c = getattr(m, "FooParam")
#create an instance of the class, initializing its values (and self)
fooparam_instance = c(3.14)
#call its method!
fooparam_instance.What()

总的来说,我将变量c重命名为foo_import和fooparam_import :)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章