如果我不能修改file1中的_文件以避免引发错误,如何在下面的代码中实现正确的导入?
文件1:
MY_FILE = `something_that_raises_error`
class MyClass:
def __init__(self):
print("INSIDE MY CLASS")
class DiffClass:
def __init__(self, value=MY_FILE):
print(value)
文件2:
from file1 import MyClass
my_class = MyClass()
最好的选择是,如果它可以修改MY_FILE
变量中的File2
,然后调用MyClass
,但我认为这是不可能的,所以有没有一种方法来导入MyClass
而不执行部分代码负责MY_FILE
和DiffClass
?
在file1中,您可以添加一个如果__name__ == '__main__':
后卫。导入文件时,低于它的任何内容都不会执行。这里有一个你可以测试的例子。在file1
中的MY_FILE
上放置一个断点,在file2
中的print("TEST")
上放置一个断点。使用if语句,您将看到只有print("TEST")
命中断点,因为没有设置MY_FILE
。删除if__name__ == '__main__':
并使用断点再次运行,您将看到它命中。
您可以阅读关于Python官方留档的内部工作。
文件1:
# do stuff that executes when imported
class MyClass:
def __init__(self):
print("INSIDE MY CLASS")
print("hi")
if __name__ == '__main__':
# won't execute if file is imported
MY_FILE = "something_that_raises_error"
class DiffClass:
def __init__(self, value=MY_FILE):
print(value)
文件2:
from file1 import MyClass
print("TEST")