【问题标题】:Set a variable from a class within a different file从不同文件中的类设置变量
【发布时间】:2018-09-03 01:25:53
【问题描述】:

我有 2 个文件:

文件A.py

fileB.py

我正试图从fileB 中的函数设置(更改)来自fileA 的变量。我试图改变的变量在一个类中(我相信这个变量是一个类变量)。我尝试在fileB 中导入fileA,但出现错误。

# fileA:
...
class SomeDialog(QDialog):
    my_var = 0
...


# fileB:
...
from fileA import SomeDialog as sd
    def my_func():
        sd.my_var = 5
...

有什么帮助吗?

【问题讨论】:

  • 你遇到了什么错误?
  • ImportError: cannot import name 'SomeDialog'

标签: python-3.x variables import


【解决方案1】:

你的班级应该是这样的:

class SomeDialog(QDialog):
    def __init__(self):
        self.my_var = 0

然后你可以像这样访问my_var

SomeDialog.my_var

【讨论】:

  • 这是一个数千行的大程序。我在很多地方都使用了这个变量,它是在 init 之前定义的。顺便说一句,您对实例变量的回答是什么?
  • @Mr.Robot 你可以把它变成一个实例变量
  • 问题是我做不到。重要的是它保留为程序的类变量。该值在不同的实例中必须始终保持不变。我正在寻找上面显示方式的答案。
  • 好的,那么抱歉,我帮不了你
【解决方案2】:

根据您收到的错误,您可能在某处进行了循环导入。它与您尝试对课程进行的操作无关。

详情请见ImportError: Cannot import name X

如果是这种情况,解决它的唯一方法是更改​​文件结构。

【讨论】:

  • 即使您是对的(并且您可能是对的),它也不能回答如何从另一个文件更改类变量的问题。这里的答案是例如变化。我正在寻找另一种方法来做到这一点..
  • @Mr.Robot 您使用的方法似乎是正确的。我在我的电脑上测试过,它工作正常。
【解决方案3】:

类变量定义在类内,但在类的任何方法之外。不使用类变量。类变量在所有类实例中具有相同的值

A.py

from B import SomeDialog as sd
def my_func():
    print sd.my_var
    sd.my_var = 5
    return sd 
_my_func = my_func()
print _my_func.my_var

B.py

class SomeDialog(object):
    my_var = 0

#输出

0
5

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-14
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 2015-09-09
    • 1970-01-01
    相关资源
    最近更新 更多