0

我正在从 script1.py 调用另一个程序(script2.py)。script1.py 包含一个按钮,当我按下它时,它将开始执行 script2.py。我想在 script2 中使用 script1 的变量。我尝试了 2 种方法来获取它,但给出了错误或空列表。请帮助我,如果需要任何其他信息,请告诉我。谢谢你。

script1.py 

class window2:  #i have tried to use d but even the value changes in the __init__function it is giving me a empty list in script2 print function
    d=[]
    def __init__(data):
        self.data=data
        window2.d=data
        data_copy()


def data_copy(): #so created this function to fetch da but giving the following error
    da=window2.d


script2.py

from script1 import data_copy
from script1 import window2

def view():
    print(window2.d) #giving empty list
    print(data_copy().da) #giving error

data_copy 错误:

Traceback (most recent call last):
  File "C:\Users\Desktop\Status\script2.py", line 59, in <module>
    view()
  File "C:\Users\Desktop\Status\script2.py", line 13, in view
    print(data_copy().da)
AttributeError: 'NoneType' object has no attribute 'da'
        
4

2 回答 2

0

您可以尝试在第二个脚本中创建一个函数,该函数将您的数据作为参数并在第一个脚本中调用它。

from script2 import view


class Window2:
    def __init__(self, data):  # init should take self, it is an instance of class
        self.data = data


window_2 = Window2('some data')  # creating instance

view(window_2.data)  # call function from script2


# script2

def view(data):
    print(data)

# > 'some data'
于 2020-09-08T07:37:12.130 回答
0

您拥有 NoneType 的一个常见原因是您不希望它是对可变对象的就地操作的分配。例如:

 mylist = mylist.sort()

列表的sort()方法是对列表进行就地排序,即mylist修改。但是该方法的实际返回值是None而不是排序的列表。所以你刚刚分配Nonemylist. 如果你接下来尝试做,说mylist.append(1),,

Python 会给你这个错误。

于 2020-09-08T07:27:12.950 回答