首页 > 解决方案 > exec inits 类中的类声明,但函数不起作用

问题描述

我将附上两个代码块,第一个是运行的主要代码,第二个是包含用于测试目的的示例类的 testClass 文件。要了解发生了什么,可能最容易自己运行代码。当我调用 sC.cls.print2() 时,它说 self 参数未实现。通常在使用类时,self(在这种情况下)将是 sC.cls,您不必将其作为参数传递。非常感谢任何关于为什么会发生这种情况的建议,我认为这与 exec 的范围有关,但即使我在 exec 中运行此函数,它也会给出相同的错误,我无法找到解决方法。如果您想了解更多信息,请询问!

import testClass

def main():
    inst = testClass.myClass()
    classInfo = str(type(inst)).split()[1].split("'")[1].split('.')
    print(classInfo)
    class StoreClass:
        def __init__(self):
            pass
    exec('from {} import {}'.format(classInfo[0], classInfo[1]))
    sC = StoreClass()
    exec('sC.cls = {}'.format(classInfo[1]))
    print(sC.cls)
    sC.cls.print2()
if __name__ == '__main__':
    main()
class myClass:
    def printSomething(self):
        print('hello')

    def print2(self):
        print('hi')

标签: pythonclassscopeexecdeclaration

解决方案


推荐阅读