Python的超类局部作用域中的异常行为

问题描述

有3个单独的脚本:

script1.py:

post_script = """
    gd = document.getElementById('{plot_id}');
    gd.on('plotly_click',function(data) {
        var pn='',tn='',isNodeClick=false;
        for (var i=0; i < data.points.length; i++){
            pn = data.points[i].pointNumber;
            tn = data.points[i].curveNumber;
            if(data.points[i].fullData.mode === 'markers') {
                isNodeClick = true;
            }
        };
        if (!isNodeClick) return;
        var visible = gd.calcdata[pn][0].trace.visible;
        const update = {'visible': visible === true ? 'legendonly': true}
        Plotly.restyle(gd,update,[pn]);
        return false;
    });
    """

script2.py:

from .cool_local_pkg import AwsmClass

class MyCoolClass:
      def __init__(self,**kwargs):
         ....# some amazing code here

最后,script3.py:

from .cool_local_pkg import AwsmClass
from .script1 import MyCoolClass

class MyCoolClass2(MyCoolClass):
      def __init__(self,**kwargs):
         some_cool_var = kwargs['awsm_var']
         some_cool_inst = AwsmClass(some_cool_var)

我得到了错误

import script2
awsm_args = {'awsm_var':'awsm_val'}
best_class_ever = script2.MyCoolClass2(**awsm_args)

所以我必须在本地(在类中)导入包,这不是一个好主意。

我在UnboundLocalError: local variable 'AwsmClass' referenced before assignment 中运行了self.__dir__()dir(),它们都不包含MyCoolClass,但是他们称它没有问题。同样在AwsmClass之前的MyCoolClass2调用它也不是问题。那么什么(在哪里)发生了什么?我知道它与本地包有关(非本地包不会发生),但是为什么要在这种情况下专门使用呢?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...