我知道类似的问题已经问过几次。但是请继续阅读..
我正在尝试根据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] 删除。
我来说两句