如果我不能修改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()
最好的选择是,如果可以修改File2
中的myu文件
变量,然后调用MyClass
,但我认为这是不可能的,那么有没有一种方法可以导入MyClass
,而不执行负责myu文件
和DiffClass
的部分代码?
在file1中,您可以添加,如果__name__ == '__main__:
下面的任何内容都不会执行,那么如果导入时它在main中。这里有一个你可以测试的例子。在file1
中的MY_FILE
上放置一个断点,在file2
中的print("TEST")
上放置一个断点。使用if语句,您将看到只有print("TEST")
命中断点,因为没有设置MY_FILE
。删除if__name__ == '__main__':
并使用断点再次运行,您将看到它命中。
希望这有助于说明它是如何工作的。您可以阅读关于Python官方留档的内部工作。
文件1
if __name__ == '__main__':
# wont execute if not being used in main
MY_FILE = "something_that_raises_error"
class DiffClass:
def __init__(self, value=MY_FILE):
print(value)
# do stuff that executes
class MyClass:
def __init__(self):
print("INSIDE MY CLASS")
print("hi")
文件2
from file1 import MyClass
print("TEST")